超高清 (Ultra HDR) 图像格式超高清图像格式 允许图像存储更多关于光线强度的信息,从而产生更精细的高光和阴影以及更鲜艳的色彩。Android 从 Android 14(API 级别 34)开始支持超高清图像。如果您的应用在这些版本上运行,则务必配置您的应用以正确显示这些图像。另一方面,如果您的应用没有显示超高清图像,则可以通过不启用超高清显示来节省设备资源。此页面介绍如何检查图形是否支持超高清以及如何正确显示它们。
检查增益映射是否存在
超高清图像包含一个增益映射。增益映射用于确定图像中每个像素的亮度增加。要验证图像是否为超高清格式,请将图像或可绘制对象转换为Bitmap
并调用Bitmap.hasGainMap()
(自 Android 14 起可用)以检查它是否具有增益映射。
配置窗口以显示超高清图像
要以完整的动态范围显示超高清图像,请将窗口的颜色模式设置为ActivityInfo.COLOR_MODE_HDR
。通过调用窗口的setColorMode()
方法执行此操作。(这些 API 可从 Android 8 开始使用;但是,除非设备运行 Android 14 或更高版本,否则图像不会以超高清显示。)
综合示例
以下代码显示了整个过程。此代码假设图像已加载到 Bitmap 中,并检查图像是否具有增益映射。如果具有增益映射,则代码会将窗口的颜色模式切换为ActivityInfo.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);
其他资源
要了解有关超高清图像的更多信息,请参阅以下其他资源
- 视频:创建高质量的 Android 媒体体验
- 示例应用:显示超高清图像
- 超高清 HDR 图片格式规范
- 视频:Android 开发者故事:Instagram 早期采用超高清技术,仅用 3 个月就改变了用户体验