Il formato dell'immagine Ultra HDR consente di memorizzare più informazioni nelle immagini sull'intensità della luce, producendo luci e ombre più dettagliate, e colori più intensi. Android fornisce il supporto per le immagini Ultra HDR iniziali con Android 14 (livello API 34). Se la tua app è in esecuzione su queste versioni, è importante configurare l'app in modo che queste immagini vengano visualizzate correttamente. Dall'altra parte Se nell'app non vengono visualizzate immagini Ultra HDR, puoi salvare risorse non attivando il display Ultra HDR. In questa pagina viene spiegato come controllare se le grafiche supportano Ultra HDR e come visualizzarle correttamente.
Verificare la presenza di una mappa di guadagno
Le immagini Ultra HDR contengono una mappa di guadagno. La mappa del guadagno è
utilizzata per determinare la luminosità aumentata di ciascun 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 verificare se è disponibile una mappa di guadagno.
Configura la finestra per visualizzare la modalità Ultra HDR
Per visualizzare immagini Ultra HDR con l'intera gamma dinamica, imposta il colore della finestra
su ActivityInfo.COLOR_MODE_HDR
. Per farlo, chiama il metodo
il metodo setColorMode()
della finestra. Queste API sono
disponibile su Android 8. tuttavia, le immagini non vengono visualizzate in Ultra HDR a meno che
il dispositivo utilizza Android 14 o versioni successive.
Riassumendo
Il seguente codice mostra l'aspetto dell'intero processo. Questo codice presuppone un'immagine
viene caricato in una bitmap e controlla se l'immagine ha una mappa di guadagno. Se sì,
imposta la modalità colore della finestra su COLOR_MODE_HDR
. Se
l'immagine non ha una mappa di guadagno, il codice imposta la finestra sull'impostazione predefinita
modalità colore.
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 contenuti multimediali Android di alta qualità esperienze
- App di esempio: Visualizzazione in Ultra HDR
- Specifiche dei formati delle immagini Ultra HDR
- Video: Storia di uno sviluppatore Android: l'adozione iniziale di Ultra HDR da parte di Instagram trasforma la UX in soli 3 mesi