Ultra HDR 图片格式可让图片存储更多信息 从而产生更细致的高光和阴影, 以及更强烈的色彩。Android 开始支持 Ultra HDR 图片 搭载 Android 14(API 级别 34)。如果您的应用在这些版本上运行, 务必要配置您的应用以正确显示这些图片。另一个 如果您的应用未显示 Ultra HDR 图片 因为未启用 Ultra HDR 显示屏。本页将介绍如何检查 图片是否支持 Ultra HDR,以及如何正确显示这些图片。
![一张模拟图,显示了标准动态范围和高动态范围之间的差异。这张图片显示的是多云天空下的风景。右半部分模拟 HDR,具有更明亮的高光、更深的阴影和更清晰的色彩。](https://developer.android.google.cn/static/media/images/grow/ultrahdr-simulation.png?authuser=0000&hl=sr)
检查是否存在增益图
Ultra HDR 图片包含一个增益图。增益图为
用于确定图片中每个像素的调高亮度。进行验证
如果图片是 Ultra HDR 格式,请将该图片或可绘制对象转换为
Bitmap
并调用 Bitmap.hasGainMap()
(从 Android 14 开始提供)以检查它是否有增益图。
将您的窗口配置为显示 Ultra HDR
如需显示具有完整动态范围的 Ultra HDR 图片,请设置窗口的颜色
模式更改为 ActivityInfo.COLOR_MODE_HDR
。为此,您可以调用
窗口的 setColorMode()
方法。(这些 API 是
从 Android 8 开始提供;不过,除非
设备搭载 Android 14 或更高版本)。
总结
下面的代码展示了整个过程。此代码假设
并检查图像是否有增益图。如果需要,
代码会将窗口的颜色模式切换为 COLOR_MODE_HDR
。如果
图像没有增益图,则代码会将窗口切换到默认
颜色模式。
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);
其他资源
如需详细了解 Ultra HDR 图片,请参阅下面列出的其他资源: