Questo codice disegna un singolo colore (con forma alfa) utilizzando il canale alfa di una bitmap.L'accelerazione dell'hardware a nido d'ape non sembra funzionare con setColorFilter
Bitmap alphaMask = bitmap.extractAlpha();
Paint paint = new Paint();
int color = Color.GRAY;
...
paint.setColor(color);
paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.DST_IN));
...
canvas.drawBitmap(alphaMask, x, y, paint);
Per esempio, ci vorrà la bitmap a sinistra e disegnare sulla tela, come appare sulla destra:
Tuttavia, non funziona su Honeycomb (Android 3.0) quando l'accelerazione hardware è attivata. Disegna la forma come nera, non importa cosa. Ignora il valore del colore. Tuttavia, funziona perfettamente su ICS (Android 4.0) con l'accelerazione hardware attivata.
So che alcune API non sono supportate con l'accelerazione hardware, come Romain Guy documented here, sotto Quali operazioni di disegno sono supportate?, ma non sembra che utilizzi nessuno di quelli menzionati come non supportato.
Inoltre, sembrava che dicesse che setColorFilter dovrebbe funzionare at this post.
C'è qualcosa nel mio codice che non è supportato in Honeycomb? Qualche soluzione alternativa? Mi piacerebbe lasciare l'accelerazione hardware in questo caso.
Grazie
+1. Molto bella. Grazie per essere passato e facci sapere! :) – MrGomez
Ehi, non preoccuparti, voi ragazzi avete fatto cose incredibili con Android, non c'è bisogno di scusarsi! In ogni caso, ho finito per seguire il percorso del disegno in una bitmap e quindi di disegnare la bitmap sulla tela accelerata dall'hardware come hai detto tu. Per me va bene! Grazie – cottonBallPaws
@ littleFluffyKitty Sono contento che tutto abbia funzionato. Grazie, @RomainGuy! – MrGomez