Ultra HDR-Bilder anzeigen

Mit dem Ultra-HDR-Bildformat können Bilder mehr Informationen speichern über die Intensität des Lichts, was zu detaillierteren Spitzlichtern und Schatten und intensivere Farben. Android unterstützt Ultra HDR-Bilder ab sofort mit Android 14 (API-Level 34). Wenn Ihre App in diesen Versionen läuft, ist es müssen Sie Ihre App so konfigurieren, dass diese Bilder korrekt angezeigt werden. Auf der anderen Wenn deine App keine Ultra HDR-Bilder anzeigt, kannst du wenn das Ultra HDR-Display deaktiviert ist. Auf dieser Seite wird erläutert, wie Sie ob die Grafik Ultra HDR unterstützt und wie sie korrekt angezeigt werden.

Prüfen, ob eine Verstärkungskarte vorhanden ist

Ultra-HDR-Bilder enthalten eine Verstärkungskarte. Die Verstärkungskarte wird verwendet, um die erhöhte Helligkeit der einzelnen Pixel im Bild zu bestimmen. Zur Bestätigung wenn ein Bild im Ultra HDR-Format vorliegt, konvertiere das Bild oder Drawable in ein Bitmap und Bitmap.hasGainMap() anrufen (verfügbar seit Android 14), um zu prüfen, ob eine Karte mit Verstärkung verfügbar ist.

Fenster für die Darstellung von Ultra HDR konfigurieren

Zur Anzeige von Ultra HDR-Bildern mit vollem Dynamikumfang musst du die Fensterfarbe festlegen Modus auf ActivityInfo.COLOR_MODE_HDR. Rufen Sie dazu die Methode setColorMode()-Methode des Fensters. (Diese APIs sind verfügbar ab Android 8; Bilder werden jedoch nur dann in Ultra HDR angezeigt, wenn sie auf dem Gerät Android 14 oder höher installiert ist.

Zusammenfassung

Der folgende Code zeigt den gesamten Prozess. Bei diesem Code wird von einem Bild ausgegangen, in eine Bitmap geladen und überprüft, ob das Bild eine Verstärkungskarte hat. Ist dies der Fall, wird der Farbmodus des Fensters in COLOR_MODE_HDR geändert. Wenn das Bild keine Verstärkungskarte hat, wechselt der Code zum Standardfenster Farbmodus.

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 zusätzlichen Ressourcen: