Рисование на холсте - PorterDuff.Mode.CLEAR рисует черным! Зачем?
Я пытаюсь создать собственный вид, который работает просто: есть битмап, который раскрывается путем дуги - от 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 с альфа-каналом.