Visão geral da compatibilidade de tela

O Android é executado em uma variedade de dispositivos com diferentes tamanhos de tela e densidades de pixel. O sistema realiza o dimensionamento e redimensionamento básicos para adaptar a interface do usuário a diferentes telas, mas há mais trabalho que precisa ser feito para garantir que a IU se adapte a cada tipo de tela adequadamente.

Esta página fornece uma visão geral desses tópicos e dos recursos disponíveis no Android para ajudar na adaptação adequada do seu app. Instruções mais específicas sobre como criar um app para essas variações de tela estão disponíveis nas seguintes páginas:

Tamanhos de tela

O tamanho da tela é o espaço visível disponível para a IU do app, e não o tamanho real da tela do dispositivo. Outros fatores são considerados, como a orientação, as decorações do sistema (como a barra de navegação) e as alterações de 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 o layout do app para caber na tela atual. Para garantir que o layout seja bem redimensionado até mesmo para pequenas variações de tamanho da tela, é necessário implementá-lo com a flexibilidade em mente. O princípio básico que precisa ser seguido é evitar codificar a posição e o tamanho dos componentes da IU. Em vez disso, permita que os tamanhos de exibição se expandam e especifique posições de exibição em relação à visualização pai ou outras visualizações irmãs para que a ordem pretendida e os tamanhos relativos permaneçam os mesmos ao aumentar o layout.

Saiba mais sobre layouts flexíveis.

Layouts alternativos

Um layout flexível é muito importante, mas também é necessário projetar diferentes layouts que otimizem a experiência do usuário para o espaço disponível nos diferentes dispositivos, como smartphones e tablets. Por isso, no Android é possível fornecer arquivos de layout alternativo, que são aplicados pelo sistema no ambiente de execução com base no tamanho da tela do dispositivo atual.

Figura 1. O mesmo app usa um layout diferente para tamanhos de tela variados

Saiba como criar layouts alternativos.

Imagens expansíveis

Como o layout precisa ser expandido para caber na tela atual, os bitmaps anexados a qualquer uma das visualizações de layout também precisam. No entanto, expandir um bitmap comum em direções arbitrárias pode resultar em artefatos de dimensionamento estranhos e imagens distorcidas.

Para resolver isso, o Android é compatível com bitmaps nine-patch, em que é possível especificar regiões de pixel pequenas que podem ser esticadas, enquanto o restante da imagem permanece sem ajuste.

Saiba mais sobre bitmaps de nine-patch.

Densidades de pixel

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

Figura 2. Uma demonstração de dois dispositivos que são do mesmo tamanho, mas têm diferentes densidades de pixels

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) dos elementos da IU quando é exibido em telas com diferentes densidades (conforme mostrado na figura 2). É importante manter a independência de densidade, porque, sem ela, um elemento de IU (como um botão) pode aparecer maior em uma tela de baixa densidade e menor em uma tela de alta densidade. Quando os pixels são maiores, como na figura 2, alguns pixels podem fazer uma grande diferença.

Com o sistema Android, é possível alcançar a independência de densidade, porque ele fornece pixels de densidade independente (dp ou dip, na sigla em inglês) como uma unidade de medida que precisa ser usada no lugar de pixels (px).

Saiba mais sobre os pixels de densidade independente.

Bitmaps alternativos

Para garantir que suas imagens tenham a melhor aparência em todas as telas, você precisa fornecer bitmaps alternativos que correspondam a cada densidade de tela. Por exemplo, se o app fornece bitmaps apenas para telas de densidade média (mdpi), o Android os amplia em telas de alta densidade para que a imagem ocupe o mesmo espaço físico na exibição. Isso pode resultar em artefatos de dimensionamento visíveis nos bitmaps. Portanto, seu app precisa incluir bitmaps alternativos em uma resolução mais alta.

Saiba como fornecer bitmaps alternativos.

Gráficos vetoriais

Para tipos simples de imagens (geralmente ícones), é possível evitar a criação de imagens separadas para cada densidade usando gráficos vetoriais. Como os gráficos vetoriais definem a ilustração com caminhos de linha geométrica em vez de pixels, eles podem ser desenhados em qualquer tamanho sem artefatos de dimensionamento.

Saiba mais sobre como usar gráficos vetoriais.

Wear OS, Android TV, Android Auto e Chrome OS

As recomendações acima se aplicam a todos os fatores de forma do Android, mas se você quiser criar um app para dispositivos Wear OS, Android TV, Android Auto ou Chrome OS, será necessário um pouco mais de trabalho.

Cada um desses dispositivos tem o próprio modelo de interação do usuário, e seu app precisa acomodar a ele. Em alguns casos, como no Wear OS, você precisa repensar a experiência do usuário e criar um app específico para o dispositivo. Para oferecer compatibilidade com dispositivos Chrome OS (como o Google Pixelbook), podem ser necessárias algumas pequenas modificações no app existente para haver compatibilidade com a interação por teclado/mouse e com uma tela muito maior.

Para oferecer compatibilidade com esses dispositivos, consulte os seguintes guias do desenvolvedor:

Incompatibilidade de tela

Embora a estrutura e as ferramentas do Android forneçam tudo o que você precisa para disponibilizar um app em todas as configurações de tela, você ainda pode optar por não disponibilizar seu app em algumas configurações de tela devido a algum tipo de incompatibilidade.

Nesse caso, você pode declarar que seu app é compatível apenas com telas específicas.