Bandas de color solo en Android 4.0 +
En emuladores que ejecutan Android 4.0 o 4.0.3, veo bandas de colores horribles de las que parece que no puedo deshacerme. En todas las otras versiones de Android que he probado, los gradientes se ven suaves.
Tengo un SurfaceView que está configurado como RGBX_8888, y las bandas no están presentes en el lienzo representado. Si difumino manualmente la imagen superponiendo un patrón de ruido al final del renderizado, puedo suavizar los gradientes nuevamente, aunque obviamente a un costo de rendimiento que prefiero evitar.
Así que las bandas se introducen más tarde. Solo puedo suponer que, en 4.0+, mi SurfaceView se está cuantificando a una profundidad de bits más baja en algún punto entre que se dibuja y se muestra, y puedo ver en una captura de pantalla que los gradientes están cambiando 8 valores a la vez en cada canal, lo que sugiere una cuantización a 555 (no 565).
gregué lo siguiente a mi función Activity onCreate, pero no hizo ninguna diferencia.
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
Traté de poner lo anterior en onAttachedToWindow () en su lugar, pero aún no hubo cambios.
(Creo que RGBA_8888 es el formato de ventana predeterminado de todos modos para 2.2 y superior, por lo que no sorprende que establecer ese formato explícitamente no tenga efecto en 4.0 +.)
Lo que deja la pregunta, si la fuente es 8888 y el destino es 8888, ¿qué está introduciendo la cuantización / bandas y por qué solo aparece en 4.0 +?
Muy desconcertante. Me pregunto si alguien puede arrojar algo de luz.