El formato de imagen Ultra HDR permite que las imágenes almacenen más información sobre la intensidad de la luz, lo que da como resultado luces y sombras más detalladas, y colores más intensos. Android proporciona compatibilidad con imágenes Ultra HDR a partir de Android 14 (nivel de API 34). Si tu app se ejecuta en esas versiones, es importante configurarla para que muestre estas imágenes correctamente. Por otro lado, si tu app no muestra imágenes Ultra HDR, puedes guardar recursos del dispositivo si no habilitas la pantalla Ultra HDR. En esta página, se explica cómo verificar si los gráficos admiten Ultra HDR y cómo mostrarlos correctamente.
Verifica la presencia de un mapa de ganancia
Las imágenes Ultra HDR contienen un mapa de ganancia. El mapa de ganancia se usa para determinar el aumento de brillo de cada píxel de la imagen. Para verificar si una imagen está en formato Ultra HDR, conviértela o dibújala en un Bitmap y llama a Bitmap.hasGainMap() (disponible desde Android 14) para verificar si tiene un mapa de ganancia.
Configura tu ventana para mostrar Ultra HDR
Para mostrar imágenes Ultra HDR con el rango dinámico completo, configura el modo de color de la ventana en ActivityInfo.COLOR_MODE_HDR. Para ello, llama al
método setColorMode() de la ventana. (Estas APIs están disponibles desde Android 8; sin embargo, las imágenes no se muestran en Ultra HDR, a menos que el dispositivo ejecute Android 14 o versiones posteriores).
Revisión general
En el siguiente código, se muestra cómo se ve todo el proceso. Este código supone que se carga una imagen en un mapa de bits y verifica si la imagen tiene un mapa de ganancia. Si lo hace, el
código cambia el modo de color de la ventana a COLOR_MODE_HDR. Si la imagen no tiene un mapa de ganancia, el código cambia la ventana al modo de color predeterminado.
Kotlin
val bitmap = /* Get Bitmap from Image Resource */ binding.imageContainer.setImageBitmap(bitmap) // Set color mode of the activity to the correct color mode. requireActivity().window.colorMode = if (bitmap.hasGainmap()) ActivityInfo.COLOR_MODE_HDR else ActivityInfo.COLOR_MODE_DEFAULT
Java
final Bitmap bitmap = /* Get Bitmap from Image Resource */ binding.imageContainer.setImageBitmap(bitmap); // Set color mode of the activity to the correct color mode. int colorMode = ActivityInfo.COLOR_MODE_DEFAULT; if (bitmap.hasGainmap()) colorMode = ActivityInfo.COLOR_MODE_HDR; requireActivity().getWindow().setColorMode(colorMode);
Recursos adicionales
Para obtener más información sobre las imágenes Ultra HDR, consulta los siguientes recursos adicionales:
- Video: Cómo crear experiencias multimedia de Android de alta calidad
- App de ejemplo: Cómo mostrar Ultra HDR
- Especificación del formato de imagen de Ultra HDR
- Video: Android Developer Story: La adopción temprana de Ultra HDR por parte de Instagram transforma la UX en solo 3 meses