在Android中使用Path.arcTo()绘制环的奇怪行为

我已经成功实现了从角度0到360开始扫描的animation绘制环。 然而,当环的尾部以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() ,我的按钮将消失。

我想android会在真正绘制它之前修改360。 所以x - 360 === x ,它什么都没画!

我已经迟到了,但是我通过添加一个实心圆作为animation的最后一帧来解决它(我使用的是AnimationDrawable,但在这种情况下它的想法是一样的)。 除了一行之外,最后一帧的所有绘制代码​​都是相同的:

更换:

 mPath.arcTo(rectF, startAngle, sweepAngle); 

有类似的东西:

 mPath.addCircle(cenX, cenY, innerRadius, Path.Direction.CCW);