Orientação, proporção e capacidade de redimensionamento do app

Os apps Android funcionam em todos os tipos de dispositivos: smartphones, tablets, dobráveis, Chromebooks, carros, TVs e até XR. Para se adaptar a esse ambiente variado, o app precisa oferecer suporte a todos os formatos e tamanhos de tela do dispositivo.

O Android 16 (nível 36 da API) permite que os apps se adaptem a diferentes formatos e tamanhos de tela substituindo as restrições de orientação da tela, proporção e redimensionamento. As substituições se aplicam a dispositivos com largura mínima >= 600dp, que define o seguinte:

  • Tablets
  • Telas internas de dispositivos dobráveis com tela grande
  • Modo Janela para Computador (em todos os formatos)

Os apps destinados ao nível 36 da API podem ser redimensionados e entrar no modo de várias janelas (equivalente a resizeableActivity="true") se a largura menor da tela for >= 600 dp.

O app é exibido com efeito letterbox em um dispositivo de tela grande desdobrado anterior ao Android 16, mas aparece em tela cheia quando é direcionado ao Android 16. O app mostra mais itens de notícias quando está em tela cheia, em vez de letterbox.
Figura 1. O feed de notícias para desenvolvedores que antes tinha efeito letterbox em dispositivos com tela grande (à esquerda) é executado em tela cheia quando direcionado ao Android 16 (à direita).

O Android 16 aplica um modelo consistente de design de app adaptável que otimiza a experiência do usuário respeitando as preferências dele para orientação do dispositivo, proporção e tamanho da tela.

Mudanças

Os seguintes atributos e APIs do manifesto são ignorados em apps destinados ao Android 16 (nível 36 da API) em telas grandes:

Atributo ou API Valores ignorados
screenOrientation portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape
resizeableActivity todas
minAspectRatio todas
maxAspectRatio todas
setRequestedOrientation()

getRequestedOrientation()
portrait, landscape, reversePortrait, reverseLandscape, sensorPortrait, sensorLandscape, userPortrait, userLandscape

Exceções

As exceções às mudanças do Android 16 incluem:

  • Telas menores que sw600dp (a maioria dos smartphones, flip phones e telas externas de dobráveis de tela grande)

  • Jogos, com base na flag android:appCategory

    Publique seu jogo usando o Android App Bundle e a Assinatura de apps do Google Play para que o Google Play gerencie a flag e ofereça os benefícios dos pacotes de apps automaticamente. Consulte também a Visão geral do manifesto do app.

  • O usuário ativa o comportamento padrão do app nas configurações de proporção

Desativar

Para desativar o comportamento do nível 36 da API, declare a propriedade de manifesto PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY.

Para desativar uma atividade específica, defina a propriedade no elemento <activity>:

<activity ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</activity>

Para desativar o recurso em todo o app, defina a propriedade no elemento <application>:

<application ...>
    <property
        android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
        android:value="true" />
    ...
</application>

Testes

Para testar se o app é afetado pelas mudanças do Android 16, use os emuladores da série Pixel Tablet e Pixel Fold no Android Studio e defina targetSdkPreview = "Baklava" no arquivo build.gradle do módulo do app.

Ou use o framework de compatibilidade do app nos dispositivos de teste ativando a flag UNIVERSAL_RESIZABLE_BY_DEFAULT (consulte Ferramentas do framework de compatibilidade).

É possível automatizar os testes com o framework de teste Espresso e as APIs de teste do Jetpack Compose.

Problemas comuns

Apps que restringem a orientação do dispositivo, a proporção ou o redimensionamento do app podem ter problemas de exibição no Android 16, como layouts sobrepostos.

Para oferecer uma experiência do usuário ideal em smartphones, dispositivos dobráveis, tablets, Chromebooks, telas de carro ou XR, crie um app responsivo e adaptável:

  • Evitar componentes de interface esticados:layouts projetados para telas de smartphone padrão e retrato provavelmente não vão acomodar outras proporções. Por exemplo, elementos da interface que preenchem toda a largura da tela vão aparecer esticados na orientação paisagem. Adicione uma largura máxima aos componentes para evitar alongamento.

  • Ativar rolagem de layouts:se os layouts não rolarem, os usuários talvez não possam acessar botões ou outros elementos da interface que estão fora da tela na orientação paisagem. Ative a rolagem de layouts de apps para garantir que todo o conteúdo seja acessível independente da altura da tela.

  • Garantir a compatibilidade da câmera em modo retrato e paisagem:as visualizações do visor da câmera que assumem uma proporção e orientação específica em relação ao sensor da câmera podem resultar em visualizações esticadas ou invertidas em telas não conformes. Verifique se os visores giram corretamente com mudanças de orientação. Permitir que os visores se ajustem a proporções de interface diferentes das do sensor.

  • Preservar o estado durante mudanças de tamanho da janela:a remoção de restrições de orientação e proporção pode resultar em mudanças frequentes no tamanho da janela do app em resposta à preferência dos usuários, por exemplo, girando, dobrando ou abrindo um dispositivo ou redimensionando um app no modo de várias janelas ou de janelas para computadores. Mudanças de configuração, como mudanças de orientação e redimensionamento de janela, causam a recriação de atividades (por padrão). Para garantir uma experiência ideal do usuário, preserve o estado do app durante as mudanças de configuração para que ele retenha dados (como a entrada de formulário) e os usuários possam manter o contexto.

  • Usar classes de tamanho de janela:ofereça suporte a diferentes tamanhos de janela e proporções sem personalizações específicas do dispositivo. Suponha que os tamanhos das janelas mudem com frequência. Use classes de tamanho de janela para caracterizar as dimensões da janela e aplique um layout adaptável adequado.

  • Criar layouts responsivos:nas classes de tamanho de janela, os layouts responsivos se ajustam às mudanças nas dimensões de exibição para sempre criar uma apresentação ótima do app.

Cronograma

  • Android 16 (2025): o suporte a todas as orientações e proporções e a capacidade de redimensionamento do app é a experiência de referência para dispositivos de tela grande (largura de tela mínima >= 600 dp) para apps direcionados ao nível 36 da API. No entanto, os desenvolvedores podem desativar esse recurso.

  • Versão do Android em 2026:o suporte a todas as orientações e proporções e a redimensionamento de apps será a experiência de referência para dispositivos de tela grande (largura de tela mínima >= 600 dp) para apps com o nível desejado da API 37. Os desenvolvedores não terão a opção de desativar.

Nível desejado da API Dispositivos aplicáveis Desativação do desenvolvedor permitida
36 (Android 16) Dispositivos com tela grande (menor largura da tela >= 600 dp) Sim
37 (previsto) Dispositivos com tela grande (menor largura da tela >= 600 dp) Não

Os prazos para segmentar níveis específicos da API são específicos da app store. O Google Play vai exigir que os apps sejam direcionados ao nível 36 da API a partir de agosto de 2026 e ao nível 37 a partir de agosto de 2027.

Outros recursos