הצגת תמונות Ultra HDR

פורמט התמונה 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. כדי לעשות זאת, צריך לקרוא ל-method‏ setColorMode() של החלון. (ממשקי ה-API האלה זמינים מ-Android 8, אבל התמונות לא מוצגות ב-Ultra HDR אלא אם המכשיר פועל עם Android 14 ומעלה).

סיכום של כל המידע

הקוד הבא מראה איך נראה התהליך. הקוד הזה מניח שהתמונה נטענה למפת סיביות (bitmap) ובודק אם יש לתמונה מפת קלט. אם כן, הקוד משנה את מצב הצבע של החלון ל-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 זמין במקורות המידע הבאים: