Il formato immagine Ultra HDR consente alle immagini di memorizzare maggiori informazioni sull'intensità della luce, ottenendo così alte luci e ombre più dettagliate e colori più intensi. Android supporta le immagini Ultra HDR a partire da Android 14 (livello API 34). Se la tua app è in esecuzione su queste versioni, è importante configurare l'app in modo che visualizzi correttamente queste immagini. Se invece l'app non visualizza immagini Ultra HDR, puoi risparmiare risorse del dispositivo disattivando l'opzione Display Ultra HDR. In questa pagina viene spiegato come verificare se la grafica supporta l'Ultra HDR e come visualizzarli correttamente.
Verificare la presenza di una mappa di guadagno
Le immagini Ultra HDR contengono una mappa di guadagno. La mappa di guadagno viene utilizzata per
determinare l'aumento della luminosità di ogni pixel nell'immagine. Per verificare
se un'immagine è in formato Ultra HDR, convertila o disegnabile in un
Bitmap
e chiama Bitmap.hasGainMap()
(disponibile da Android 14) per controllare se ha una mappa di guadagno.
Configura la finestra per visualizzare l'Ultra HDR
Per visualizzare le immagini Ultra HDR con l'intera gamma dinamica, imposta la modalità colore della finestra su ActivityInfo.COLOR_MODE_HDR
. Per farlo, chiama il
metodo setColorMode()
della finestra. Queste API sono disponibili a partire da Android 8. Tuttavia, le immagini non vengono visualizzate in Ultra HDR, a meno che sul dispositivo non sia installato Android 14 o una versione successiva.
Organizzazione dei risultati in corso...
Il seguente codice mostra l'aspetto dell'intero processo. Questo codice presuppone che un'immagine sia caricata in una bitmap e verifica se l'immagine ha una mappa di guadagno. In caso affermativo, il codice imposta la modalità colore della finestra su COLOR_MODE_HDR
. Se
l'immagine non dispone di una mappa di guadagno, il codice imposta la finestra sulla modalità colore
predefinita.
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);
Risorse aggiuntive
Per ulteriori informazioni sulle immagini Ultra HDR, consulta le seguenti risorse aggiuntive:
- Video: Creazione di esperienze multimediali Android di alta qualità
- App di esempio: Visualizzazione di Ultra HDR
- Specifiche del formato delle immagini Ultra HDR