Visualizza immagini Ultra HDR

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 supporta 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 la tua app non visualizza immagini Ultra HDR, puoi risparmiare risorse del dispositivo non attivando la visualizzazione Ultra HDR. Questa pagina spiega come verificare se la grafica supporta Ultra HDR e come visualizzarla correttamente.

Verifica della 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, convertila o converti l'elemento drawable 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 da Android 8, ma le immagini non vengono visualizzate in Ultra HDR, a meno che il dispositivo non utilizzi Android 14 o versioni successive).

Elaborazione della risposta…

Il codice seguente mostra l'intero processo. Questo codice presuppone che un'immagine sia caricata in una bitmap e controlla se l'immagine ha una mappa di guadagno. In questo caso, il codice cambia la modalità colore della finestra in COLOR_MODE_HDR. Se l'immagine non ha una mappa di guadagno, il codice passa alla modalità colore predefinita della finestra.

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: