2

カスタム ビューを使用していますが、一部の線が他の線よりも暗く見えることに気付きました。いろいろ調べた結果、それは感情ではなく現実であることがわかりました。それらを描画するコードは同じですが、複数回呼び出されます。一度呼び出された場合、線は薄い灰色になります。もう一度呼び出すと、線は濃い灰色になります。なんで?(Android 5.1 搭載の nexus 4)

bgPaint = new Paint();
bgPaint.setAntiAlias(true);
bgPaint.setStyle(Paint.Style.FILL);
bgPaint.setColor(Color.LTGRAY);

borderPaint = new Paint();
borderPaint.setAntiAlias(true);
borderPaint.setStyle(Paint.Style.STROKE);
borderPaint.setColor(Color.DKGRAY);

canvas.drawRoundRect(new RectF(tile.getX() + 1, tile.getY() + 1, tile.getXx() - 1, tile.getYy() - 1),
        roundRadius, roundRadius, borderPaint);
canvas.drawRoundRect(new RectF(tile.getX() + 1, tile.getY() + 1, tile.getXx() - 1, tile.getYy() - 1),
        roundRadius, roundRadius, bgPaint);

これは一例です。右下のタイルはより暗いです。

例

更新:最初のdrawRoundRect担当者です。2 番目のものをコメントアウトしたので、それなしでこの動作を再現できます。しかし、正直なところ、2 回目の呼び出しで正しくレンダリングされます (濃い灰色)。しかし、最初の呼び出しで軽量化されるのはなぜでしょうか?

4

1 に答える 1

1

形状の.setAntiAlias(true);エッジが、すでに存在する色とブレンドされているためです。

DKGRAYそのため、最初のパスのように白とブレンドするのではなく、ブレンドDKGRAYDKGRAYてより暗い外観を与えています。

于 2016-01-02T13:22:34.850 に答える