Ultra HDR 圖片格式可讓圖片儲存更多關於光強度的資訊,進而產生較詳細的高亮度和陰影,以及更強烈的色彩。Android 支援從 Android 14 (API 級別 34) 開始的 Ultra HDR 圖片。如果您的應用程式是在這些版本上執行,請務必設定應用程式,使其能夠正確顯示這些圖片。另一方面,如果您的應用程式未顯示 Ultra HDR 圖片,您不必啟用 Ultra HDR 顯示功能,藉此儲存裝置資源。本頁面說明如何檢查圖像是否支援 Ultra HDR,以及如何正確顯示圖像。
![圖片顯示標準動態範圍與高動態範圍之間的差異。這張圖片顯示多雲的天空。右半部是模擬 HDR 動畫的畫面,亮度更明亮、陰影部分更暗,色彩更清晰。](https://developer.android.google.cn/static/media/images/grow/ultrahdr-simulation.png?authuser=8&hl=zh-tw)
檢查增益圖是否存在
Ultra HDR 圖片包含進階地圖。增益圖可用於判斷圖片中每個像素的亮度提高。如要確認圖片是否採用 Ultra HDR 格式,請將圖片或可繪項目轉換為 Bitmap
,並呼叫 Bitmap.hasGainMap()
(自 Android 14 起提供),檢查是否具有增益集。
將視窗設為顯示 Ultra HDR
如要以完整動態範圍顯示 Ultra HDR 圖片,請將視窗的色彩模式設為 ActivityInfo.COLOR_MODE_HDR
。只要呼叫視窗的 setColorMode()
方法即可。(這些 API 自 Android 8 提供;但除非裝置搭載 Android 14 以上版本,否則圖片不會顯示在 Ultra HDR 中。
總結
下方程式碼顯示整個程序的外觀。此程式碼會假設圖片已載入至點陣圖,並檢查圖片是否擁有增強地圖。如果包含,程式碼會將視窗的顏色模式切換為 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 圖片,請參閱下列其他資源:
- 影片:打造優質的 Android 媒體體驗
- 範例應用程式:顯示 Ultra HDR
- Ultra HDR 圖片格式規格