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 のプレビュー ウィンドウでは、カスタム ビューは正常に描画されていましたが、Android 5.0.2 を搭載した HTC One M8 で実行すると、0 度にわずかなギャップがありました。

ソフトウェア レンダリングを使用するようにビューを設定すると、問題が修正されました。

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

ハードウェア レンダリング: ソフトウェア レンダリング:

ギャップ ギャップなし

于 2015-07-09T19:45:59.780 に答える