Im Ultra-HDR-Bildformat können Bilder mehr Informationen zur Lichtintensität speichern. Das führt zu detaillierteren Spitzlichtern und Schattenbereichen 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 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 erläutert, wie Sie prüfen, ob Grafiken Ultra HDR unterstützen, und wie Sie sie richtig darstellen.
Prüfen, ob eine Gain-Map vorhanden ist
Ultra HDR-Bilder enthalten eine Gain Map. Die Gain-Map 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 die Zeichnung in ein Bitmap
und rufen Sie Bitmap.hasGainMap()
auf (verfügbar ab Android 14), 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 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 ausgeführt wird.
Zusammenfassung
Der folgende Code zeigt, wie der gesamte Prozess aussieht. In diesem Code wird davon ausgegangen, dass ein Bild in ein Bitmap geladen wurde. Es wird geprüft, ob das Bild eine Gain-Map hat. Wenn das der Fall ist, wird der Farbmodus des Fensters durch den Code auf COLOR_MODE_HDR
umgestellt. Wenn das Bild keine Gain-Map hat, wird das Fenster im Code in den Standardfarbmodus umgeschaltet.
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:
- Video: Hochwertige Android-Media-Erlebnisse schaffen
- Beispiel-App: Ultra HDR anzeigen
- Spezifikation des Ultra HDR-Bildformats
- Video: Android Developer Story: Instagram's early adoption of Ultra HDR transforms UX in only 3 months (Android-Entwicklergeschichte: Instagrams frühe Einführung von Ultra HDR transformiert die Nutzerfreundlichkeit in nur drei Monaten)