Os apps adaptáveis têm suporte a telas de todos os tamanhos: a tela inteira do dispositivo, redimensionável janelas no modo de várias janelas, nas orientações de retrato e paisagem, dobradas e desdobradas de dispositivos dobráveis.
Uma pequena lista de definições de configuração e APIs permite que você crie versões apps. No entanto, algumas configurações e APIs desatualizadas são incompatíveis com apps adaptáveis. e precisam ser evitados.
Capacidade de redimensionamento
Os apps adaptáveis são compatíveis com o redimensionamento e o modo de várias janelas.
O atributo resizeableActivity
da <activity>
e
Os elementos do manifesto <application>
ativam ou desativam o recurso de várias janelas
no Android 11 (nível 30 da API) e versões anteriores. No Android 12 (nível 31 da API) e
Telas maiores e mais altas oferecem suporte ao modo de várias janelas, independente
. Para mais informações, consulte Suporte ao modo de várias janelas.
Permita que seu app participe de cenários multitarefa e multijanela maior produtividade e satisfação dos usuários.
Defina resizeableActivity="true"
caso o app seja direcionado a níveis de API anteriores ao 24.
Caso contrário, é true
por padrão no Android 7.0 (API
nível 24) e superiores.
Não defina resizeableActivity="false"
para nenhum nível de API. Não excluir seu app
em casos de uso que envolvem o modo de várias janelas.
Orientação
Os apps adaptáveis têm suporte à orientação retrato e paisagem, independente da tela tamanho ou modo de janelamento.
A configuração do manifesto screenOrientation
restringe a orientação da atividade.
Elimine a configuração screenOrientation
do manifesto do app.
Bloquear a orientação dos apps não impede mudanças de tamanho da janela. Apps são
redimensionados quando entram no modo de várias janelas, quando um dispositivo é dobrado ou desdobrado,
ou quando uma janela de formato livre é redimensionada. Seu app precisa oferecer suporte a mudanças na janela.
tamanho, independentemente da configuração do atributo screenOrientation
.
Não restrinja a orientação da atividade. Os apps que bloqueiam a orientação têm efeito letterbox em dispositivos de tela grande e tamanhos de janela incompatíveis.
Os apps com efeito letterbox estão sujeitos à diminuição da visibilidade no Google Play para tablets, dobráveis e dispositivos ChromeOS.
Proporção
Como os tamanhos de tela e janela variam, o mesmo acontece com as proporções (de alta e estreito, para quadrado, para curto e amplo.
As configurações do manifesto minAspectRatio
e maxAspectRatio
restringem
a proporção do seu app para valores codificados.
Adapte o app à tela, independentemente das dimensões relativas.
Elimine as configurações minAspectRatio
e maxAspectRatio
do seu app
manifesto do aplicativo. Ou garanta que seu app seja redimensionável e que a proporção cuide de si mesmo.
Consulte a seção Redimensionamento.
Não tente controlar as dimensões relativas do seu app. Se seu aplicativo for executado em um ou em uma janela com uma proporção incompatível com o proporção do app, ele terá efeito letterbox.
No Android 14 (nível 34 da API) e versões mais recentes, os usuários podem substituir a proporção do app para expandir os apps com efeito letterbox e preencher a área de exibição disponível. Consulte Dispositivo modo de compatibilidade.
Tamanho da janela
Otimizar layouts para diferentes tamanhos de tela é a premissa central do de design adaptável. Os apps adaptáveis se concentram no tamanho da janela e não no dispositivo tamanho da tela. Quando o app está em tela cheia, a janela dele é a tela do dispositivo.
As classes de tamanho de janela fornecem uma maneira sistemática de determinar e categorizar o tamanho da janela do app. Adaptar o app mudando os layouts à medida que a janela classe de tamanho do seu app muda.
Avalie o tamanho da janela do app com base nas classes de tamanho dela.
Para determinar a classe de tamanho da janela, use currentWindowAdaptiveInfo()
.
função de nível superior da biblioteca adaptativa do Compose Material 3. Para mais
mais informações, consulte Como criar apps adaptáveis.
Não desconsidere a utilidade das definições de classe de tamanho de janela e do APIs integradas. Não use APIs descontinuadas para calcular o tamanho da janela.
APIs descontinuadas
As APIs de plataformas mais antigas não medem corretamente a janela do app. medem na tela do dispositivo, e algumas não incluem decoração do sistema.
Use WindowManager#getCurrentWindowMetrics()
e
WindowMetrics#getBounds()
para saber o tamanho da janela do app. Usar
WindowMetrics#getDensity()
para descobrir a densidade de exibição.
Não use as seguintes APIs Display
descontinuadas para determinar o tamanho da janela:
getSize()
: uso descontinuado no Android 11 (nível 30 da API)getMetrics()
: uso descontinuado no Android 11 (nível 30 da API)getRealSize()
: uso descontinuado no Android 12 (nível 31 da API)getRealMetrics()
: uso descontinuado no Android 12 (nível 31 da API)
Escrever
O Jetpack Compose foi projetado para o desenvolvimento de interface adaptável. Sem XML, sem layout
arquivos, sem qualificadores de recursos. Apenas elementos combináveis sem estado baseados em Kotlin
como Column
, Row
e Box
, que descrevem a interface e modificadores
como offset
, padding
e size
que adicionam comportamento à interface
os elementos.
Crie com o Compose. Fique por dentro dos recursos e lançamentos mais recentes.
Não confie em tecnologia desatualizada. Não deixe seu app obsoleto.
Biblioteca adaptativa do Compose Material 3
A biblioteca adaptável do Compose Material 3 fornece componentes e APIs que e facilitam o desenvolvimento de apps adaptáveis.
Use as seguintes APIs para tornar seu app adaptável:
NavigationSuiteScaffold
: alterna entre a barra de navegação e coluna de navegação, dependendo da classe de tamanho da janela do app.ListDetailPaneScaffold
: implementa o layout canônico de detalhes e listas. Adapta o layout ao tamanho da janela do app.SupportingPaneScaffold
: implementa o painel de suporte canônico. o mesmo layout organizacional.
Não tenha trabalho à toa. Não perca os ganhos de produtividade dos desenvolvedores fornecidos por todas as bibliotecas do Jetpack Compose.
Layouts
Os usuários esperam que os apps aproveitem ao máximo o espaço de exibição disponível com componentes ou controles aprimorados.
Apps adaptáveis otimizam layouts com base em mudanças na tela, principalmente mudanças no tamanho da janela do app ou mudanças na posição do dispositivo
Altere os componentes da interface conforme o tamanho da janela muda para aproveitar os recursos disponíveis espaço de exibição. Por exemplo, troque a barra de navegação da parte de baixo da tela tamanhos de janela para uma coluna de navegação vertical em janelas médias e expandidas. Reposicione as caixas de diálogo para que elas sejam acessíveis em todas as telas.
Organize o conteúdo em painéis para ativar layouts de vários painéis, como detalhes de lista e painel de suporte para exibições de conteúdo dinâmico.
Se você não estiver usando painéis de conteúdo, não estique os elementos de IU para preencher
espaço de exibição disponível. Linhas de texto longas são difíceis de ler. Estendido
os botões parecem mal projetados. Se você usa o Modifier.fillMaxWidth
, não use
presumem que esse é o comportamento certo para todos os tamanhos de tela.
Dispositivos de entrada
Os usuários não usam apenas telas sensíveis ao toque para interagir com apps.
Os apps adaptáveis oferecem suporte a teclados, mouses e styluses externos para oferecer uma experiência do usuário aprimorada e ajuda os usuários a serem mais produtivos em formatos de todos os tipos.
Aproveite a funcionalidade integrada do framework do Android para navegação por guias pelo teclado e clicar, selecionar e rolar com o mouse ou trackpad. Publicar atalhos de teclado do seu app em Assistente de atalhos de teclado.
Use a biblioteca do Material 3 (link em inglês) do Jetpack para permitir que os usuários gravem em qualquer
TextField
usando uma stylus.
Não impossibilita métodos de entrada alternativos. Não introduzir acessibilidade problemas.
Resumo
- Criar seu app com o Compose e a biblioteca adaptativa do Material 3
- Layouts de base em classes de tamanho de janela
- Criar layouts de vários painéis
- Tornar seu app redimensionável
- Nunca bloquear a orientação da atividade
- Não restringir a proporção
- Suporte a outras entradas que não sejam por toque
- Evitar APIs descontinuadas
✓ Faça o que os usuários esperam: otimizar seu app para a diversidade de dispositivos que as pessoas usam todos os dias.
✗ Não aguarde. Comece a usar hoje mesmo!