在Android中使用Path.arcTo()绘制圆环时的怪异行为 [英] Weird behaviour in drawing a ring using Path.arcTo() in Android

查看:659
本文介绍了在Android中使用Path.arcTo()绘制圆环时的怪异行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过成功地从0到360度角开始扫掠来实现了动画绘图环. 但是,当戒指的尾部以360度角与头部相遇时,所有画图都消失了.

I have implemented an animated drawing ring by start sweeping at angle 0 to 360 successfully. However when the tail of the ring meets its head at 360 angle, all drawing is disappear.

这是我在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.它会产生此结果.

notice here that i set sweepAngle to -359 just before it becomes circle. However if I change sweepAngle to -360. It produces this result.

它消失了!! 有人知道如何解决这个问题,请帮帮我吗?

It disappears!! Anyone know how to solve this please help me?

谢谢.

PS.我不想使用drawArc(),因为我想在环上打一个孔.使用drawArc(),我的按钮将消失.

PS. I don't want to use drawArc() because I want to make a hole inside the ring. With drawArc(), my button will be gone.

推荐答案

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

I'm way late with this, but I solved it by adding a solid circle as the last frame of the animation (I was using AnimationDrawable, but the idea is the same in this case). All the draw code was the same for that last frame, except one line:

替换:

mPath.arcTo(rectF, startAngle, sweepAngle);

类似:

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

这篇关于在Android中使用Path.arcTo()绘制圆环时的怪异行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆