Ultra HDR-Bilder anzeigen

Das Ultra HDR-Bildformat ermöglicht es Bildern, mehr Informationen über die Lichtintensität zu speichern, was zu detaillierteren Lichtern und Schatten und intensiveren Farben führt. Android unterstützt Ultra HDR-Bilder ab Android 14 (API-Level 34). Wenn Ihre App auf diesen Versionen ausgeführt wird, müssen Sie sie so konfigurieren, dass diese Bilder richtig angezeigt werden. Wenn Ihre App keine Ultra HDR-Bilder anzeigt, können Sie Geräteressourcen sparen, indem Sie die Ultra HDR-Anzeige nicht aktivieren. Auf dieser Seite wird erklärt, wie Sie prüfen, ob Grafiken Ultra HDR unterstützen, und wie Sie sie richtig anzeigen.

Vorhandensein einer Gain Map prüfen

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

Fenster für die Anzeige von Ultra HDR konfigurieren

Wenn Sie Ultra HDR-Bilder mit dem vollen Dynamikumfang 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 ausgeführt wird.

Zusammenfassung

Der folgende Code zeigt, wie der gesamte Prozess aussieht. In diesem Code wird davon ausgegangen, dass ein Bild in eine Bitmap geladen wurde, und es wird geprüft, ob das Bild eine Gain Map enthält. Wenn dies der Fall ist, wird der Farbmodus des Fensters auf COLOR_MODE_HDR umgestellt. Wenn das Bild keine Gain Map enthält, wird der Farbmodus des Fensters auf den Standardfarbmodus umgestellt.

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: