Я пытаюсь создать пользовательский вид, который работает просто: есть растровое изображение, которое обнаруживается путем дуги - от 0deg до 360deg. Степени меняются с некоторыми 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
Теперь все рисует отлично, но... фон BLACK в целом View.
Если я устанавливаю canvas.drawColor(..., PorterDuff.Mode.DST) и опускаю canvas.drawBitmap() - дуга рисуется правильно на прозрачном фоне.
Мой вопрос: как установить PorterDuff режимы, чтобы он работал с прозрачностью?
Конечно, bitmap - это 32-разрядный PNG с альфа-каналом.