10

我已经成功地从 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(),我的按钮将消失。

4

2 回答 2

2

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

于 2014-03-31T15:35:30.120 回答
1

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

代替:

mPath.arcTo(rectF, startAngle, sweepAngle);

有类似的东西:

mPath.addCircle(cenX, cenY, innerRadius, Path.Direction.CCW);
于 2014-04-18T20:43:53.910 回答