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

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

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, proporção e capacidade de redimensionamento. As substituições se aplicam a dispositivos com menor largura >= 600dp, o que define o seguinte:

  • Tablets
  • Telas internas de dispositivos dobráveis de 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 menor largura da tela for >= 600 dp.

O app é mostrado em letterbox em um dispositivo de tela grande desdobrado antes do Android 16, mas em tela cheia ao segmentar o Android 16. O app mostra mais notícias em tela cheia do que com efeito letterbox.
Figura 1. O feed de notícias para desenvolvedores, que antes era apresentado em formato letterbox em dispositivos com tela grande (à esquerda), agora é exibido em tela cheia ao segmentar o Android 16 (à direita).

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

Mudanças

Os seguintes atributos de manifesto e APIs 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 o seguinte:

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

  • Jogos, com base na flag android:appCategory

    Publique o jogo usando Android App Bundles e a Assinatura de apps do Google Play, permitindo 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 das séries 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 de apps 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 testes 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, dobráveis, tablets, dispositivos ChromeOS, telas de carro e XR, crie um app responsivo e adaptável:

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

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

  • Garantir a compatibilidade da câmera no modo retrato e paisagem:as prévias do visor da câmera que pressupõem uma proporção e uma orientação específicas em relação ao sensor da câmera podem resultar em prévias esticadas ou invertidas em telas não conformes. Verifique se os viewfinders giram corretamente com as mudanças de orientação. Permite que os viewfinders se ajustem às proporções da interface que são diferentes da proporção do sensor.

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

  • Use 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 vão mudar com frequência. Use classes de tamanho de janela para caracterizar as dimensões da janela e aplique um layout adaptável adequado.

  • Crie layouts responsivos:dentro das classes de tamanho de janela, os layouts responsivos se ajustam às mudanças nas dimensões da tela para sempre criar uma apresentação ideal do app.

Cronograma

  • Android 16 (2025): o suporte a todas as orientações e proporções, além do redimensionamento de apps, é a experiência básica para dispositivos de tela grande (menor largura de tela >= 600 dp) em apps direcionados ao nível 36 da API. No entanto, os desenvolvedores podem recusar.

  • Lançamento do Android em 2026:o suporte a todas as orientações e proporções, além da capacidade de redimensionamento de apps, será a experiência padrão para dispositivos de tela grande (menor largura de tela >= 600 dp) em apps destinados ao nível 37 da API. Os desenvolvedores não têm a opção de desativar.

Nível desejado da API Dispositivos aplicáveis Desativação permitida para desenvolvedores
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 variam de acordo com a loja de apps. 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