Comportamiento extraño al dibujar un anillo usando Path.arcTo () en Android

He implementado un anillo de dibujo animado por arranque de barrido en el ángulo de 0 a 360 con éxito. Sin embargo, cuando la cola del anillo se encuentra con su cabeza en el ángulo 360, todo el dibujo es desaparecer.

Este es mi código para el anillo en onDraw()

  float startAngle = 270; float sweepAngle = -359; paint.setColor(Color.DKGRAY); paint.setShadowLayer(4, 2, 2, 0x80000000); rectF.set(cenX - outerRadius, cenY - outerRadius, cenX + outerRadius, cenY + outerRadius); path.arcTo(rectF, startAngle, sweepAngle); //canvas.drawArc(rectF, 0, 360, false, paint); rectF.set(cenX - innerRadius, cenY - innerRadius, cenX + innerRadius, cenY + innerRadius); /*paint.reset(); paint.setAntiAlias(true); paint.setColor(Color.WHITE); canvas.drawArc(rectF, 0, 360, false, paint);*/ path.arcTo(rectF, startAngle + sweepAngle, -(sweepAngle)); canvas.drawPath(path, paint); 

Y este es el resultado,

Introduzca aquí la descripción de la imagen

Observe aquí que establezco sweepAngle a -359 justo antes de que se convierta en círculo. Sin embargo, si cambio sweepAngle a -360. Produce este resultado.

Introduzca aquí la descripción de la imagen

¡Desaparece !! Alguien sabe cómo resolver esto por favor ayúdeme?

Gracias.

PD. No quiero usar drawArc() porque quiero hacer un agujero dentro del ring. Con drawArc() , mi botón se habrá ido.

2 Solutions collect form web for “Comportamiento extraño al dibujar un anillo usando Path.arcTo () en Android”

Supongo que android se mod 360 antes de realmente dibujar. Así que x - 360 === x y no dibujará nada!

Estoy muy atrasado con esto, pero lo solucioné agregando un círculo sólido como el último marco de la animación (estaba usando AnimationDrawable, pero la idea es la misma en este caso). Todo el código de draw era el mismo para ese último frame, excepto una línea:

reemplazar:

 mPath.arcTo(rectF, startAngle, sweepAngle); 

Con algo como:

 mPath.addCircle(cenX, cenY, innerRadius, Path.Direction.CCW); 
  • Android dibuja una línea para seguir tu dedo
  • ¿Cómo eliminar el retraso al abrir una actividad con un DrawerLayout?
  • Cómo dibujar una flecha utilizando la clase de gráficos de Android?
  • Android: ¿Cómo obtener una vista personalizada para volver a dibujar parcialmente?
  • Cómo dibujar un círculo con animación en android con el tamaño del círculo basado en un valor
  • Cómo dibujar figuras sin llenar en Android?
  • Dibujo con los dedos
  • Animación de texto en lienzo - Android
  • Trayecto de bola de dibujo de Android
  • Android: ¿Cómo llenar el color a la parte específica de la imagen solamente?
  • Cómo mover un ShapeDrawable en lienzo en eventos de toque
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.