Visão geral de compatibilidade de tela

O Android é executado em uma variedade de dispositivos que têm diferentes tamanhos de tela e densidades de pixel. O sistema realiza o escalonamento e o redimensionamento básicos para adaptar a interface do usuário a diferentes telas, mas há maneiras de ajudar a interface a se adaptar melhor a cada tipo.

Figura 1. O Android é executado em diferentes dispositivos que têm diferentes telas e densidades de pixel.

Esta página oferece uma visão geral dos recursos disponíveis no Android para ajudar seu app a se adaptar a todos. Para conferir instruções mais específicas sobre como criar seu app para diferentes variações de tela, consulte a documentação abaixo:

Tamanhos de tela

O tamanho da tela é o espaço visível da interface do app. O tamanho da tela, como é reconhecido pelo app, não é o tamanho real da tela do dispositivo. Os apps precisam considerar a orientação da tela, as decorações do sistema (como a barra de navegação) e as mudanças na configuração de janelas, como quando o usuário ativa o modo de várias janelas.

Layouts flexíveis

Por padrão, o Android redimensiona seu aplicativo para que ele caiba na tela atual. Para que o layout seja redimensionado corretamente em pequenas variações de tamanho da tela, implemente-o com flexibilidade em mente. Não fixe no código a posição e o tamanho dos componentes da interface. Em vez disso, permita que os tamanhos de visualização se estendam e especifique posições de visualização em relação à visualização mãe ou a outras visualizações irmãs para que a ordem pretendida e os tamanhos relativos permaneçam os mesmos à medida que o layout cresce.

Para saber mais sobre layouts flexíveis, consulte Design responsivo.

Layouts alternativos

Um layout flexível é importante, mas você também precisa projetar diferentes layouts que otimizem a experiência do usuário para o espaço disponível em diferentes dispositivos. O Android permite fornecer arquivos de layout alternativos que o sistema aplica no tempo de execução com base no tamanho da tela do dispositivo atual.

Figura 2. O mesmo app usa um layout diferente para tamanhos de tela diferentes.

Para saber como criar layouts alternativos, consulte Design adaptável.

Imagens expansíveis

Como seu layout precisa se expandir para caber na tela atual, o mesmo acontece com os bitmaps que você anexa a qualquer uma das visualizações do layout. No entanto, alongar um bitmap comum em direções arbitrárias pode resultar em artefatos de escalonamento estranhos e imagens distorcidas.

Para resolver isso, o Android oferece suporte a bitmaps Nine-Patch, em que você especifica pequenas regiões de pixels esticáveis, enquanto o restante da imagem permanece não dimensionado.

Para saber mais sobre bitmaps NinePatch, consulte Drawables NinePatch.

Densidades de pixel

A densidade de pixel é o número de pixels dentro de uma área física da tela. Ela é chamada de pontos por polegada (DPI). Ela é diferente da resolução da tela, que é o número total de pixels em uma tela.

Figura 3. Uma representação exagerada de dois dispositivos que são do mesmo tamanho, mas densidades de pixel diferentes.

Independência de densidade

O app atinge a "independência de densidade" quando preserva o tamanho físico (do ponto de vista do usuário) do design da interface quando é exibido em telas com diferentes densidades de pixel, como mostrado na Figura 3. É importante manter a independência de densidade, porque, sem ela, um elemento da interface, como um botão, pode parecer maior em uma tela de baixa densidade e menor em uma tela de alta densidade.

O Android ajuda você a alcançar a independência de densidade fornecendo o pixel independente de densidade (dp ou dip) como uma unidade de medida usada em vez de pixels (px).

Para saber mais sobre pixels com independência de densidade, consulte Usar pixels independentes de densidade.

Bitmaps alternativos

Para que suas imagens tenham a melhor aparência em todas as telas, forneça bitmaps alternativos para corresponder a cada densidade de tela. Se o app fornecer bitmaps apenas para telas de baixa densidade, o Android os dimensionará em uma tela de alta densidade para que as imagens ocupem o mesmo espaço físico na tela. Isso pode causar artefatos de escalonamento visíveis em bitmaps. Portanto, seu app precisa incluir bitmaps alternativos em uma resolução maior.

Para saber como fornecer bitmaps alternativos, consulte Fornecer bitmaps alternativos.

Gráficos vetoriais

Para tipos de imagens simples, como ícones, evite criar imagens separadas para cada densidade usando gráficos vetoriais. Como os gráficos vetoriais definem a ilustração com caminhos de linha geométricos em vez de pixels, eles podem ser desenhados em qualquer tamanho sem artefatos de escalonamento.

Para saber mais sobre como usar gráficos vetoriais, consulte Dar preferência a gráficos vetoriais.

Wear OS, TV, Auto e ChromeOS

As recomendações anteriores se aplicam a todos os formatos do Android, mas se você quiser criar um app para dispositivos Wear OS, Android TV, Android Auto ou ChromeOS, será necessário realizar mais tarefas.

Cada um desses tipos de dispositivo tem o próprio modelo de interação do usuário que seu app precisa acomodar. Em alguns casos, como no Wear OS, você precisa repensar a experiência do usuário do seu app e criar um app especializado para esse dispositivo. Por outro lado, para oferecer suporte a dispositivos ChromeOS, como o Google Pixelbook, talvez seja necessário fazer apenas pequenas modificações no app existente para oferecer suporte a interações com teclado ou mouse e uma tela maior.

Para oferecer suporte a esses dispositivos, consulte a seguinte documentação:

Dobráveis

Os dispositivos dobráveis normalmente têm várias telas, com diferentes telas ou combinações de telas sendo ativadas para diferentes estados do dispositivo dobrado. Siga as diretrizes deste documento para adaptar seu app a essas mudanças de configuração. No entanto, algumas configurações podem ter proporções incomuns. Portanto, teste como seu app se comporta em vários dispositivos.

Figura 4. Dobrar e desdobrar.

Normalmente, um app que funciona bem no modo de várias janelas para vários tamanhos de janela também se comporta bem em dispositivos dobráveis.

Para saber mais sobre a criação de apps para dispositivos dobráveis, consulte Saiba mais sobre dispositivos dobráveis.

Incompatibilidade de tela

Embora o framework e as ferramentas do Android forneçam tudo o que você precisa para disponibilizar apps em todas as configurações de tela, pode ser que você decida que não quer disponibilizar seu app em algumas configurações de tela devido a uma incompatibilidade. Nesse caso, você pode declarar suporte restrito à tela.