fuente de imagen

Android Color Management: lo que los desarrolladores y diseñadores deben saber

En la reciente versión de Oreo, Android obtuvo soporte inicial para la administración del color, lo que ayuda a combinar las salidas de color en todos los dispositivos. Con la actualización, los dispositivos Android ahora pueden mostrar colores fuera de la gama de colores sRGB. Si no está familiarizado con los perfiles de color o las gamas de colores anchas, le recomiendo este video de Google I / O sobre la comprensión del color:

tl; dw; La gestión del color garantiza que los colores se vean iguales en diferentes pantallas. Por ejemplo, el color # ff0000 (rojo puro para aquellos que no leen códigos hexadecimales) puede aparecer de manera diferente dependiendo de la tecnología de pantalla que lo muestre: algunas pantallas pueden mostrar colores más saturados o intensos que otras. Decir # ff0000 en sRGB especifica un tono específico de rojo (en el espacio de color sRGB) para que las pantallas con administración de color puedan producir el color exacto deseado.

En esta publicación, me gustaría describir lo que los diseñadores y desarrolladores de aplicaciones de Android necesitan saber sobre estos cambios.

Visualización de imágenes de amplia gama de colores

Las imágenes pueden incrustar un perfil de color, declarando el espacio de color de su información de color. Del mismo modo, muchas cámaras son capaces de capturar una amplia gama de colores e incrustar un perfil de color apropiado. Esto les permite mostrar colores más allá de la gama sRGB estándar. Para mostrar imágenes con amplios perfiles de color en su aplicación, debe optar por Actividad. Para hacer esto, configure el atributo colorMode en la declaración de la actividad en el manifiesto de su aplicación:

También puede configurar esto mediante programación, pero debe hacerlo durante onCreate antes de crear su ventana. La compatibilidad con la amplia gama de colores es opcional, ya que requiere más recursos del sistema (lo que podría provocar una disminución del rendimiento en su aplicación):

"Cuando se habilita el modo de amplia gama de colores, la ventana de la actividad usa más memoria y procesamiento de GPU para la composición de la pantalla. Antes de habilitar el modo de amplia gama de colores, debe considerar cuidadosamente si la actividad realmente se beneficia de ello. Por ejemplo, una actividad que muestra fotos en pantalla completa es un buen candidato para el modo de amplia gama de colores, pero una actividad que muestra miniaturas pequeñas no lo es ".

Tenga en cuenta que si está utilizando una sola arquitectura de Actividad, entonces puede tener sentido dividir la visualización de imágenes de una amplia gama de colores en una nueva Actividad.

Aquí hay un ejemplo que muestra dos actividades que muestran la misma imagen de prueba de gama de colores amplia (un PNG con el perfil de color Display P3 incrustado), la actividad superior declara un modo de color de gama amplia, la parte inferior no.

Las actividades que muestran contenido de una amplia gama de colores deben optar por el modo de color amplio (arriba)

Representación precisa del color

Muchos dispositivos Android han tenido pantallas capaces de mostrar gamas de colores más amplias durante algún tiempo. Antes de la administración de color de Android 8.0, se suponía que todo el contenido era sRGB, pero las pantallas anchas en color reinterpretarían los valores de color en su gama y efectivamente "estirarían" los colores. Esto hace que los rojos sean más rojos, los verdes más verdes, etc., lo que lleva a una apariencia más saturada. Sin embargo, este estiramiento es impreciso y no hay forma de calcular el efecto de estiramiento, por lo tanto, los colores renderizados no son precisos.

Muchas aplicaciones han desaturado sus activos para compensar este estiramiento. Como consecuencia, los colores pueden aparecer apagados cuando se muestran en dispositivos con pantallas calibradas. Es decir, en dispositivos con precisión de color, como el Pixel 2, los activos desaturados aparecerán menos vívidos que en pantallas no precisas. Una vez que se generaliza la representación con precisión de color, los creadores de aplicaciones pueden dejar de alterar los activos y confiar en que su contenido se muestre según lo previsto. Sin embargo, hasta entonces, hay algunos pasos que puede seguir para asegurarse de que su contenido se vea bien tanto en pantallas con precisión de color como en dispositivos sin administración de color.

Android 8.0 agrega un nuevo calificador de recursos widecg que puede usar para alterar los colores en dispositivos cuya pantalla tiene una amplia gama de colores y es compatible con la representación de la amplia gama de colores (también ahora para el inverso).

Tenga en cuenta que la compatibilidad con la amplia gama de colores es distinta de si la actividad actual se ejecuta en modo de color wideColorGamut. Es decir, este calificador se aplicará si el dispositivo admite una representación precisa del color, independientemente de si la actividad se ejecuta en modo de color amplio.

Por ejemplo, una aplicación puede declarar una paleta de colores base en res / values ​​/ colors.xml:


 # 5bc3cc 
 # 302c54 
 # c7416b 
 # e37b5b 
 # ffd64f 

... y un conjunto alternativo en res / values-widecg / colors.xml:


 # 36c1cd 
 # 251f55 
 # c8144e 
 # e4572e 
 # ffc914 
Proporcione diferentes colores para usar en dispositivos con precisión de color (izquierda) y más antiguos

Puede usar la misma técnica con activos ráster (por ejemplo, res / drawable-widecg-mdpi / foo.png) pero esto requerirá el envío de activos casi duplicados, por lo que puede que no valga la pena compensar el aumento del tamaño de su aplicación. Considere pasar a los activos vectoriales que pueden colorearse dinámicamente.

Mayor apoyo en camino

Si bien recientemente anunciamos planes para agregar un nuevo modo de color "saturado" que permita a los usuarios optar por dejar de renderizar con precisión de color (es decir, actuar como un dispositivo que ahora no tiene en cuenta), sigo creyendo que es importante actualizar sus aplicaciones para un mundo con gestión del color. Al actualizar sus aplicaciones para admitir mejor la representación precisa del color, menos usuarios sentirán la necesidad de optar por salir de este modo. Planeamos continuar invirtiendo en soporte de color amplio; agregando más superficie API para trabajar con una amplia gama de colores en futuras versiones (como las API actualizadas de Paint y Canvas que aceptan colores con mayor precisión de bits).

La realidad de las pantallas modernas es que los diseñadores y desarrolladores ahora necesitan comprender la administración del color y cómo aplicarla dentro de su aplicación. A medida que se envían más dispositivos con pantallas de amplia gama y renderizado con precisión de color, es importante adelantarse a la ola y actualizar sus aplicaciones para proporcionar la mejor experiencia. Consideramos que esta es la mejor manera de ofrecer una gran experiencia a sus usuarios, donde los colores que ven son los que usted pretendía.

Lectura relacionada

  • Una excelente introducción al manejo del color.
  • Amplia guía de contenido en color
  • Documentación de Android ColorSpace, espacios de color compatibles comunes
  • La experiencia de Instagram implementando color amplio en iOS
  • Dando sentido a la gestión del color