Zeichnung auf Leinwand - PorterDuff.- Modus.KLAR zieht schwarz! Warum?

Ich versuche, eine benutzerdefinierte Ansicht erstellen, die funktioniert einfach: es ist eine Bitmap, die offenbart durch arc-Pfad - von 0deg auf 360deg. Grad verändern sich mit einigen FPS.

Also machte ich eine benutzerdefinierte Ansicht mit überschrieben onDraw() Methode:

@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 ist wie folgt initialisiert:

arcPaint = new Paint();
arcPaint.setAntiAlias(true);
arcPaint.setColor(Color.RED); //Color doesn't matter

Nun, alles zieht toll, aber... der hintergrund ist SCHWARZ in der gesamten Ansicht.

Wenn ich canvas.drawColor(..., PorterDuff.Mode.DST) und weglassen canvas.drawBitmap() - die arc ist richtig gezeichnet auf dem transparenten hintergrund.

Meine Frage ist - wie man PorterDuff Modi zu machen, arbeiten mit Transparenz?

Natürlich bitmap 32-bit-PNG mit alpha-Kanal.

InformationsquelleAutor der Frage cadavre | 2013-08-22

Schreibe einen Kommentar