O formato de imagem Ultra HDR permite que as imagens armazenem mais informações a intensidade da luz, resultando em destaques e sombras mais detalhados, e cores mais intensas. O Android oferece suporte a imagens Ultra HDR a partir de com o Android 14 (nível 34 da API). Se o app estiver sendo executado nessas versões, importante configurar o app para mostrar essas imagens corretamente. No outro Se o app não estiver exibindo imagens Ultra HDR, será possível salvar ao desativar a tela Ultra HDR. Esta página explica como verificar se os gráficos são compatíveis com Ultra HDR e como exibi-los corretamente.
Verificar a presença de um mapa de ganho
As imagens Ultra HDR contêm um mapa de ganho. O mapa de ganho
usada para determinar o aumento do brilho de cada pixel da imagem. Para verificar
se uma imagem estiver no formato Ultra HDR, converta a imagem ou o drawable em um
Bitmap
e chamar Bitmap.hasGainMap()
(disponível desde o Android 14) para conferir se há um mapa de ganho.
Configure a janela para exibir Ultra HDR
Para exibir imagens Ultra HDR com toda a escala dinâmica, defina a cor da janela
para ActivityInfo.COLOR_MODE_HDR
. Para isso, chame o método
método setColorMode()
da janela. Essas APIs são
disponível a partir do Android 8. No entanto, as imagens não são exibidas em Ultra HDR, a menos
o dispositivo está executando o Android 14 ou mais recente.
Para resumir
O código a seguir mostra a aparência de todo o processo. Esse código presume que uma imagem
é carregada em um bitmap e verifica se a imagem tem um mapa de ganho. Se isso acontecer, o
muda o modo de cor da janela para COLOR_MODE_HDR
. Se
a imagem não tiver um mapa de ganho, o código mudará a janela para o
modo de cor.
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);
Outros recursos
Para saber mais sobre imagens Ultra HDR, consulte os recursos abaixo:
- Vídeo: Como criar mídia Android de alta qualidade experiências
- App de exemplo: Como exibir Ultra HDR
- Especificação de formato de imagem Ultra HDR
- Vídeo: Histórias de desenvolvedores Android: A adoção inicial do Ultra HDR no Instagram transforma a UX em apenas 3 meses