Android中这个奇怪的drawArc()/ arcTo()bug(图形故障)是什么?

时间:2013-12-27 06:02:36

标签: android

我在Nexus 7上运行了我的代码,同时仍安装了Android 4.3。然后我升级到Android 4.4并再次运行我的代码。以下是我对一个奇怪的Canvas.drawArc()/ Path.arcTo()bug(图形故障)的发现......

第一种方法

@Override
protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    //draw Background
    canvas.drawRect(mOuterArcRectangle, mBackgroundPaint);

    //draw arc
    Path path = new Path();
    path.arcTo(mInnerArcRectangle, mAngleStart, mSweep);
    canvas.drawPath(path, mPaint);
}

国家

mOuterArcRectangle = RectF(0.0, 0.0, 1080.0, 1080.0)
mInnerArcRectangle = RectF(150.0, 150.0, 930.0, 930.0)
mAngleStart = 120
mSweep = 135

导致此结果...... enter image description here

第二种方法

@Override
protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    //draw Background
    canvas.drawRect(mOuterArcRectangle, mBackgroundPaint);

    //draw arc
    canvas.drawArc(mInnerArcRectangle, mAngleStart, mSweep, false, mPaint);
}

国家

mOuterArcRectangle = RectF(0.0, 0.0, 1080.0, 1080.0)
mInnerArcRectangle = RectF(150.0, 150.0, 930.0, 930.0)
mAngleStart = 120
mSweep = 135

导致此结果...... enter image description here

在Android 4.4上 这两种方法都会导致(我认为会成功)

enter image description here

解决方案? 这个问题有解决方法吗?这是一个众所周知的问题吗?

1 个答案:

答案 0 :(得分:2)

我只是通过在绘制弧之前将0.5f添加到扫掠角度来修复它。