Формат изображений Ultra HDR позволяет изображениям хранить больше информации об интенсивности света, что приводит к более детальной проработке светлых и темных участков, а также к более насыщенным цветам. Android поддерживает изображения Ultra HDR начиная с Android 14 (уровень API 34). Если ваше приложение работает на этих версиях, важно настроить его для корректного отображения этих изображений. С другой стороны, если ваше приложение не отображает изображения Ultra HDR, вы можете сэкономить ресурсы устройства, отключив отображение Ultra HDR. На этой странице объясняется, как проверить, поддерживают ли графические изображения Ultra HDR, и как правильно их отображать.
Проверьте наличие карты усиления.
Изображения Ultra HDR содержат карту усиления . Карта усиления используется для определения повышенной яркости каждого пикселя изображения. Чтобы проверить, находится ли изображение в формате Ultra HDR, преобразуйте изображение или ресурс drawable в Bitmap и вызовите метод Bitmap.hasGainMap() (доступен с Android 14), чтобы проверить наличие карты усиления.
Настройте окно для отображения Ultra HDR.
Для отображения изображений Ultra HDR с полным динамическим диапазоном установите цветовой режим окна в ActivityInfo.COLOR_MODE_HDR . Для этого вызовите метод setColorMode() окна. (Эти API доступны начиная с Android 8; однако изображения не отображаются в режиме Ultra HDR, если устройство не работает под управлением Android 14 или выше.)
Собираем всё воедино
Следующий код показывает, как выглядит весь процесс. Этот код предполагает, что изображение загружено в Bitmap, и проверяет, есть ли у изображения карта усиления. Если есть, код переключает цветовой режим окна на COLOR_MODE_HDR . Если у изображения нет карты усиления, код переключает окно в цветовой режим по умолчанию.
Котлин
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);
Дополнительные ресурсы
Чтобы узнать больше об изображениях Ultra HDR, ознакомьтесь со следующими дополнительными материалами:
- Видео: Создание высококачественных мультимедийных приложений для Android
- Пример приложения: Отображение Ultra HDR
- Спецификация формата изображения Ultra HDR
- Видео: История разработчика Android: Раннее внедрение Instagram технологии Ultra HDR изменило пользовательский опыт всего за 3 месяца