Ultra HDR-Bilder anzeigen

Mit dem Ultra-HDR-Bildformat können in Bildern mehr Informationen zur Lichtintensität gespeichert werden. Das führt zu detaillierteren Spitzlichtern und Schatten sowie intensiveren Farben. Android unterstützt Ultra HDR-Bilder ab Android 14 (API-Level 34). Wenn Ihre App auf diesen Versionen ausgeführt wird, ist es wichtig, sie so zu konfigurieren, dass diese Bilder richtig angezeigt werden. Wenn in Ihrer App keine Ultra-HDR-Bilder angezeigt werden, können Sie Geräteressourcen sparen, indem Sie die Ultra-HDR-Anzeige deaktivieren. Auf dieser Seite wird erläutert, wie du prüfen kannst, ob Grafiken Ultra HDR unterstützen, und wie du sie richtig darstellst.

Vorhandensein einer Gewinnkarte prüfen

Ultra-HDR-Bilder enthalten eine Gewinnkarte. Anhand der Verstärkungskarte wird die erhöhte Helligkeit jedes Pixels im Bild bestimmt. Wenn Sie prüfen möchten, ob ein Bild im Ultra-HDR-Format vorliegt, konvertieren Sie das Bild oder Drawable in ein Bitmap und rufen Sie Bitmap.hasGainMap() (seit Android 14 verfügbar) auf, um zu prüfen, ob es eine Verstärkungskarte hat.

Fenster so konfigurieren, dass Ultra HDR angezeigt wird

Wenn Sie Ultra-HDR-Bilder mit dem vollen Dynamikbereich anzeigen möchten, legen Sie den Farbmodus des Fensters auf ActivityInfo.COLOR_MODE_HDR fest. Rufen Sie dazu die Methode setColorMode() des Fensters auf. Diese APIs sind ab Android 8 verfügbar. Bilder werden jedoch nur in Ultra HDR angezeigt, wenn auf dem Gerät Android 14 oder höher installiert ist.

Zusammenfassung

Im folgenden Code wird der gesamte Prozess dargestellt. In diesem Code wird davon ausgegangen, dass ein Bild in eine Bitmap geladen wird. Es wird geprüft, ob das Bild eine Verstärkungskarte hat. Ist das der Fall, wechselt der Code den Farbmodus des Fensters zu COLOR_MODE_HDR. Wenn das Bild keine Verstärkungskarte hat, wechselt der Code das Fenster zum Standardfarbmodus.

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);

Weitere Informationen

Weitere Informationen zu Ultra-HDR-Bildern finden Sie in den folgenden Ressourcen: