2

我正在尝试使用 canvas.drawArc() 方法和将 STROKE 设置为样式的 Paint 创建一个厚 (~40dp) 分区圆。

但是这个 onDraw() 实现

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

    Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
    p.setColor(Color.BLUE);
    p.setStrokeWidth(getResources().getDimension(R.dimen.circle_stroke_width));
    p.setStyle(Paint.Style.STROKE);

    RectF rect = new RectF(
            getWidth()*0.1f,
            getWidth()*0.1f+200,
            getWidth()*0.9f,
            getWidth()*0.9f+200
    );

    canvas.drawArc(rect, 0, 180, false, p);
    canvas.drawArc(rect, 180, 180, false, p);

}

给了我这个结果

链接到结果图片,因为我还没有任何声誉

使用这种方法连接多条弧线时,有没有办法防止这些间隙?

4

1 回答 1

2

我有一个类似的问题。在 Android Studio 预览窗口中,我的自定义视图绘制得很好,但在我的 HTC One M8 上运行它时,Android 5.0.2 出现了 0 度的轻微间隙。

我将视图设置为使用软件渲染并解决了问题:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

硬件渲染: 软件渲染:

差距 无间隙

于 2015-07-09T19:45:59.780 回答