シンプルに動作するカスタム ビューを作成しようとしています。0 度から 360 度までのアーク パスで表示されるビットマップがあります。一部の FPS では度数が変化しています。
onDraw()
そこで、メソッドをオーバーライドしてカスタム ビューを作成しました。
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
arcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
canvas.drawArc(arcRectF, -90, currentAngleSweep, true, arcPaint);
arcPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, circleSourceRect, circleDestRect, arcPaint);
}
arcPaint
次のように初期化されます。
arcPaint = new Paint();
arcPaint.setAntiAlias(true);
arcPaint.setColor(Color.RED); // Color doesn't matter
これで、すべてがうまく描画されますが、... ビュー全体で背景が黒くなっています。
設定canvas.drawColor(..., PorterDuff.Mode.DST)
して省略するとcanvas.drawBitmap()
、アークは透明な背景に適切に描画されます。
私の質問は、PorterDuff
モードを設定して透明度を調整する方法です。
もちろんbitmap
、アルファチャンネル付きの 32 ビット PNG です。