Il formato immagine Ultra HDR consente alle immagini di memorizzare più informazioni sull'intensità della luce, ottenendo ombre e luci più dettagliate e colori più intensi. Android supporta le immagini Ultra HDR a partire da Android 14 (livello API 34). Se la tua app viene eseguita su queste versioni, è importante configurarla in modo che visualizzi correttamente queste immagini. D'altra parte, se la tua app non mostra immagini Ultra HDR, puoi risparmiare risorse del dispositivo non attivando la visualizzazione Ultra HDR. Questa pagina spiega come verificare se la scheda grafica supporta Ultra HDR e come visualizzarli correttamente.
Controllare la presenza di una mappa del guadagno
Le immagini Ultra HDR contengono una mappa del guadagno. La mappa del guadagno viene
utilizzata per determinare l'aumento della luminosità di ciascun pixel dell'immagine. Per verificare
se un'immagine è in formato Ultra HDR, converti l'immagine o il disegnabile in un
Bitmap
e chiama Bitmap.hasGainMap()
(disponibile 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 installato Android 14 o versioni successive.
Riassumendo
Il seguente codice mostra l'aspetto dell'intero processo. Questo codice presuppone che un'immagine
venga caricata in una bitmap e controlla se l'immagine ha una mappa di guadagno. In questo caso, il
codice imposta la modalità colore della finestra su COLOR_MODE_HDR
. Se
l'immagine non ha una mappa di guadagno, il codice passa alla 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: Creare esperienze multimediali Android di alta qualità
- App di esempio: Visualizzazione di Ultra HDR
- Specifiche del formato dell'immagine Ultra HDR
- Video: Android Developer Story: Instagram's early adoption of Ultra HDR transforms UX in only 3 months