Il formato dell'immagine Ultra HDR consente di memorizzare più informazioni sull'intensità della luce, ottenendo così luci e ombre più dettagliate e colori più intensi. Android fornisce il supporto per le immagini Ultra HDR a partire da Android 14 (livello API 34). Se la tua app è in esecuzione su queste versioni, è importante configurarla in modo che mostri correttamente queste immagini. Se invece nell'app non vengono visualizzate immagini Ultra HDR, puoi salvare le risorse del dispositivo non attivando il display Ultra HDR. In questa pagina viene spiegato come verificare se le grafiche supportano Ultra HDR e come visualizzarle correttamente.
![Un grafico che mostra una simulazione della differenza tra Dynamic Range standard e High Dynamic Range. Questo grafico mostra un paesaggio con un cielo nuvoloso. La metà destra, che simula l'HDR, presenta alte luci più luminose, ombre più scure e colori più chiari.](https://developer.android.com/static/media/images/grow/ultrahdr-simulation.png?authuser=19&hl=it)
Verificare la presenza di una mappa di guadagno
Le immagini Ultra HDR contengono una mappa di guadagno. La mappa del guadagno viene utilizzata per determinare la maggiore luminosità di ogni pixel dell'immagine. Per verificare
se un'immagine è in formato Ultra HDR, converti l'immagine o il disegno in una
Bitmap
e chiama Bitmap.hasGainMap()
(disponibile da Android 14) per verificare se è presente una mappa di guadagno.
Configura la finestra per visualizzare la modalità Ultra HDR
Per visualizzare 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 da Android 8; tuttavia, le immagini non vengono visualizzate in Ultra HDR a meno
che sul dispositivo sia installato Android 14 o versioni successive.)
Riassumendo
Il seguente codice mostra l'aspetto dell'intero processo. Questo codice presuppone che un'immagine sia caricata in una bitmap e controlla 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 ha una mappa del 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 saperne di più sulle immagini Ultra HDR, consulta le seguenti risorse aggiuntive:
- Video: Creare esperienze multimediali Android di alta qualità
- App di esempio: Visualizzazione Ultra HDR
- Specifiche dei formati delle immagini Ultra HDR