Ultra HDR-Bilder anzeigen

Beim Ultra HDR-Bildformat können Bilder mehr Informationen über die Lichtintensität speichern. Dadurch entstehen detailliertere Spitzlichter und Schatten sowie intensivere Farben. Android unterstützt Ultra HDR-Bilder ab Android 14 (API-Level 34). Wenn Ihre App in diesen Versionen ausgeführt wird, muss sie so konfiguriert werden, dass diese Bilder korrekt angezeigt werden. Wenn deine App andererseits keine Ultra HDR-Bilder anzeigt, kannst du Geräteressourcen sparen, indem du das Ultra HDR-Display nicht aktivierst. Auf dieser Seite erfährst du, wie du prüfen kannst, ob eine Grafik Ultra HDR unterstützt und wie du sie korrekt anzeigen kannst.

Grafik, die eine Simulation des Unterschieds zwischen Standard Dynamic Range und High Dynamic Range zeigt. Die Grafik zeigt eine Landschaft mit bewölktem Himmel. Die rechte Hälfte, die HDR simuliert, bietet hellere Spitzlichter, dunklere Schatten und klarere Farben.
Abbildung 1. Eine Simulation des Unterschieds zwischen SDR- und HDR-Bildern (High Dynamic Range). Wenn ein Gerät HDR unterstützt, können Bilder dunklere Schatten und hellere Spitzlichter haben.

Prüfen, ob eine Verstärkungskarte vorhanden ist

Ultra HDR-Bilder enthalten eine Verstärkungskarte. Mit der Verstärkungskarte wird die erhöhte Helligkeit der einzelnen Pixel im Bild ermittelt. Wenn du prüfen möchtest, ob ein Bild im Ultra HDR-Format vorliegt, konvertiere das Bild oder Drawable in ein Bitmap-Element und rufe Bitmap.hasGainMap() (verfügbar seit Android 14) auf, um zu prüfen, ob es eine Verstärkungskarte hat.

Fenster für die Darstellung von Ultra HDR konfigurieren

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

Zusammenfassung

Der folgende Code zeigt den gesamten Prozess. Bei diesem Code wird davon ausgegangen, dass ein Bild in eine Bitmap geladen wird, und es wird geprüft, ob das Bild eine Verstärkungskarte hat. Falls ja, ändert der Code den Farbmodus des Fensters in COLOR_MODE_HDR. Wenn das Bild keine Verstärkungskarte hat, schaltet der Code das Fenster in den Standardfarbmodus um.

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

Zusätzliche Ressourcen

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