Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.