O formato de imagem Ultra HDR permite que as imagens armazenem mais informações sobre 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 do Android 14 (nível 34 da API). Se o app estiver sendo executado nessas versões, é importante configurá-lo para mostrar essas imagens corretamente. Por outro lado, se o app não estiver mostrando imagens Ultra HDR, você poderá economizar recursos do dispositivo não ativando a exibição Ultra HDR. Nesta página, explicamos como verificar se os gráficos são compatíveis com o Ultra HDR e como mostrá-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 é
usado para determinar o aumento do brilho de cada pixel na imagem. Para verificar
se uma imagem está no formato Ultra HDR, converta a imagem ou o drawable em um
Bitmap e chame Bitmap.hasGainMap()
(disponível desde o Android 14) para conferir se ela tem um mapa de ganho.
Configurar a janela para mostrar Ultra HDR
Para mostrar imagens Ultra HDR com o intervalo dinâmico completo, defina o modo de cor da janela como ActivityInfo.COLOR_MODE_HDR. Para fazer isso, chame o
método setColorMode() da janela. Essas APIs estão
disponíveis no Android 8, mas as imagens não são mostradas em Ultra HDR, a menos que
o dispositivo use o Android 14 ou uma versão mais recente.
Como tudo funciona em conjunto
O código a seguir mostra como é o processo completo. Esse código pressupõe que uma imagem
é carregada em um Bitmap e verifica se ela tem um mapa de ganho. Se for o caso, o
código vai mudar o modo de cor da janela para COLOR_MODE_HDR. Se
a imagem não tiver um mapa de ganho, o código vai mudar a janela para o modo de cor
padrão.
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 em Ultra HDR, consulte os seguintes recursos:
- Vídeo: Como criar experiências de mídia de alta qualidade no Android
- App de exemplo: exibição de Ultra HDR
- Especificação de formato da imagem Ultra HDR
- Vídeo: História de desenvolvedor Android: a adoção antecipada do Ultra HDR pelo Instagram transforma a UX em apenas 3 meses