Я пытаюсь создать пользовательский вид, который работает просто: есть растровое изображение, которое обнаруживается путем дуги - от 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 с альфа-каналом.