Das Ultra HDR-Bildformat ermöglicht es Bildern, mehr Informationen zur Lichtintensität zu speichern, was zu detaillierteren Spitzlichtern und Schatten sowie intensiveren Farben führt. Android unterstützt Ultra HDR-Bilder ab Android 14 (API-Level 34). Wenn Ihre Anwendung mit diesen Versionen ausgeführt wird, müssen Sie sie so konfigurieren, dass diese Bilder korrekt angezeigt werden. Wenn in Ihrer App jedoch keine Ultra HDR-Bilder angezeigt werden, können Sie Geräteressourcen sparen, wenn Sie den Ultra HDR-Bildschirm nicht aktivieren. Auf dieser Seite wird erläutert, wie du prüfen kannst, ob Grafiken Ultra HDR unterstützt und wie die Bilder richtig angezeigt werden.
Prüfen, ob eine Gewinnkarte vorhanden ist
In Ultra HDR-Bildern ist eine Karte des Zugewinns zu sehen. Die Verstärkungskarte wird verwendet, um die erhöhte Helligkeit jedes Pixels im Bild zu bestimmen. Wenn Sie prüfen möchten, ob ein Bild im Ultra HDR-Format vorliegt, konvertieren Sie das Bild oder Drawable in ein Bitmap
-Objekt und rufen Sie Bitmap.hasGainMap()
(verfügbar seit Android 14) auf, um zu prüfen, ob es eine Gain Map hat.
Fenster für die Anzeige von Ultra HDR konfigurieren
Wenn Sie Ultra HDR-Bilder mit vollem Dynamikbereich anzeigen möchten, legen Sie den Farbmodus des Fensters auf ActivityInfo.COLOR_MODE_HDR
fest. Dazu rufen Sie die Methode setColorMode()
des Fensters auf. (Diese APIs sind ab Android 8 verfügbar. Allerdings werden Bilder nur dann 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. Bei diesem Code wird davon ausgegangen, dass ein Bild in eine Bitmap geladen wird, und prüft, ob das Bild eine Gain Map hat. Ist dies der Fall, ändert der Code den Farbmodus des Fensters in COLOR_MODE_HDR
. Wenn das Bild keine Verstärkungskarte hat, wechselt der Code für das Fenster in den 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 zusätzlichen Ressourcen:
- Video: Hochwertige Android Media-Erlebnisse erstellen
- Beispiel-App: Anzeige von Ultra HDR
- Ultra HDR-Bildformatspezifikation