Este código dibuja una forma de un solo color (con alfa) utilizando un canal alfa de mapa de bits.Honeycomb Hardware Acceleration no parece funcionar 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);
Por ejemplo, se tomará el mapa de bits a la izquierda y dibujar en el lienzo como aparece a la derecha:
Sin embargo, esto no funciona en Honeycomb (Android 3.0) cuando la aceleración de hardware está activada. Dibuja la forma como negro sin importar qué. Ignora el valor del color. Sin embargo, funciona bien en ICS (Android 4.0) con aceleración de hardware activada.
Sé que algunas API no son compatibles con la aceleración de hardware, como Romain Guy documented here, en ¿Qué operaciones de dibujo son compatibles?, pero parece que no utilizo ninguno de los mencionados como no compatibles.
Además, sonaba como si dijera que setColorFilter debería funcionar at this post.
¿Hay algo en mi código que no sea compatible con Honeycomb? ¿Alguna solución? Me encantaría dejar aceleración de hardware en este caso.
Gracias
+1. Muy agradable. ¡Gracias por visitarnos y dejarnos saber! :) – MrGomez
¡Oigan, no se preocupen, ustedes han hecho cosas increíbles con Android, no hay necesidad de disculparse! De todos modos, terminé yendo por la ruta de hacer el dibujo en un mapa de bits y luego dibujar el mapa de bits en el lienzo acelerado por hardware como dijiste. ¡Funciona para mi! Gracias – cottonBallPaws
@littleFluffyKitty Me alegro de que todo salió bien. Gracias, @RomainGuy! – MrGomez