我已经成功实现了从角度0到360开始扫描的动画绘制环。 然而,当环的尾部以360度角碰到它的头部时,所有的绘图都消失了。
这是我在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);
这是结果,
请注意,我在它成为圆形之前将sweepAngle设置为-359。 但是,如果我将sweepAngle更改为-360。它产生了这个结果。
它消失了!! 有谁知道怎么解决这个请帮帮我?
感谢。
PS。我不想使用drawArc()
,因为我想在戒指内打个洞。使用drawArc()
,我的按钮将会消失。
答案 0 :(得分:2)
我认为android会在真正绘制它之前修改360。所以x - 360 === x
并没有任何吸引力!
答案 1 :(得分:1)
我已经迟到了,但我通过添加一个实心圆圈作为动画的最后一帧来解决它(我使用的是AnimationDrawable,但在这种情况下这个想法是一样的)。除了一行之外,所有绘制代码对于最后一帧是相同的:
取代:
mPath.arcTo(rectF, startAngle, sweepAngle);
有类似的东西:
mPath.addCircle(cenX, cenY, innerRadius, Path.Direction.CCW);