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

Sai*_*ail 9 android drawing android-custom-view

我已经成功实现了从角度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);
Run Code Online (Sandbox Code Playgroud)

这是结果,

在此输入图像描述

请注意,我在它成为圆之前将sweepAngle设置为-359.但是,如果我将sweepAngle更改为-360.它产生了这个结果.

在此输入图像描述

它消失了!! 有谁知道怎么解决这个请帮帮我?

谢谢.

PS.我不想用,drawArc()因为我想在戒指内打个洞.随着drawArc(),我的按钮将消失.

Kev*_*man 1

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

代替:

mPath.arcTo(rectF, startAngle, sweepAngle);
Run Code Online (Sandbox Code Playgroud)

类似的东西:

mPath.addCircle(cenX, cenY, innerRadius, Path.Direction.CCW);
Run Code Online (Sandbox Code Playgroud)