Dessin sur toile - PorterDuff.Mode.CLEAR dessine du noir! Pourquoi?

Je suis en train de créer une Vue personnalisée qui fonctionne simple: il s'agit d'une image Bitmap qui est révélé par une trajectoire en arc - de 0deg à 360deg. Les degrés sont en train de changer avec quelques FPS.

Donc j'ai fait un Affichage personnalisé avec substituée onDraw() méthode:

@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 est initialisé de la façon suivante:

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

Maintenant, tout ce qui dessine très bien, mais... le fond est NOIR, en tout point de Vue.

Si j'ai mis canvas.drawColor(..., PorterDuff.Mode.DST) et omettre canvas.drawBitmap() - l'arc est dessiné correctement sur le fond transparent.

Ma question est - comment mettre en PorterDuff modes pour le faire fonctionner avec la transparence?

Bien sûr bitmap est PNG 32 bits avec canal alpha.

source d'informationauteur cadavre