Il formato dell'immagine Ultra HDR consente alle immagini di memorizzare più informazioni sull'intensità della luce, con conseguenti 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 per visualizzare correttamente queste immagini. D'altra parte, se la tua app non visualizza le immagini Ultra HDR, puoi risparmiare le risorse del dispositivo non attivando la visualizzazione Ultra HDR. Questa pagina spiega come verificare se la grafica supporta Ultra HDR e come visualizzarla 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 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 a partire da Android 14) per verificare se ha una mappa di guadagno.
Configurare la finestra per visualizzare 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 in esecuzione Android 14 o versioni successive.)
Riassumendo
Il seguente codice mostra l'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 ha 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 scoprire di più sulle immagini Ultra HDR, consulta le seguenti risorse aggiuntive:
- Video: Creating high-quality Android media experiences
- App di esempio: Displaying Ultra HDR
- Ultra HDR image format specification
- Video: Android Developer Story: Instagram's early adoption of Ultra HDR transforms UX in only 3 months