Формат изображения Ultra HDR позволяет изображениям хранить больше информации об интенсивности света, что приводит к более детальным бликам и теням, а также более интенсивным цветам. Android обеспечивает поддержку изображений Ultra HDR, начиная с Android 14 (уровень API 34). Если ваше приложение работает на этих версиях, важно настроить его для правильного отображения этих изображений. С другой стороны, если ваше приложение не отображает изображения Ultra HDR, вы можете сэкономить ресурсы устройства, не включив отображение Ultra HDR. На этой странице объясняется, как проверить, поддерживает ли графика Ultra HDR, и как правильно их отображать.
Проверить наличие карты усиления
Изображения Ultra HDR содержат карту усиления . Карта усиления используется для определения повышенной яркости каждого пикселя изображения. Чтобы проверить, находится ли изображение в формате Ultra HDR, преобразуйте изображение или чертеж в 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
Ява
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: раннее внедрение Ultra HDR в Instagram преобразило UX всего за 3 месяца