O que fazer e o que fazer: adaptações

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.

✓ O que fazer

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.

✗ O que não fazer

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.

✓ O que fazer

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.

✗ O que não fazer

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.

✓ O que fazer

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.

✗ O que não fazer

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.

✓ O que fazer

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.

✗ O que não fazer

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.

✓ O que fazer

Use WindowManager#getCurrentWindowMetrics() e WindowMetrics#getBounds() para saber o tamanho da janela do app. Usar WindowMetrics#getDensity() para descobrir a densidade de exibição.

✗ O que não fazer

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.

✓ O que fazer

Crie com o Compose. Fique por dentro dos recursos e lançamentos mais recentes.

✗ O que não fazer

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.

✓ O que fazer

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.
✗ O que não fazer

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

✓ O que fazer

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.

✓ O que fazer:atividades de lista e detalhes organizadas em um layout de painel duplo.
✗ O que não fazer

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.

✗ O que não fazer: layout esticado para preencher a janela de expansão.

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.

✓ O que fazer

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.

✗ O que não fazer

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!