Notícias sobre produtos

A Jetpack WindowManager 1.5 está estável

Leitura de 3 minutos
Francesco Romano
Engenheiro de relações com desenvolvedores, Android

Temos o prazer de anunciar que a Jetpack WindowManager 1.5.0 agora está estável.

Essa versão se baseia na base sólida de adaptabilidade da WindowManager, tornando ainda mais fácil criar interfaces adaptáveis e refinadas que ficam ótimas em telas de todos os tamanhos. À medida que o ecossistema Android continua crescendo, os usuários estão interagindo com apps em uma variedade maior de dispositivos do que nunca: de smartphones e dispositivos dobráveis a tablets, telas conectadas, Chromebooks e até mesmo telas de carros no modo estacionado.

A WindowManager 1.5 se concentra em fornecer ferramentas melhores para esse ambiente de dispositivos diversificado.

Novidades da WindowManager 1.5

Essa versão estável apresenta novos pontos de interrupção para telas muito grandes, aprimora a API de incorporação de atividades e oferece mais flexibilidade para calcular métricas de janela.

Novas classes de tamanho de janela: grande e extragrande

A maior atualização na versão 1.5 é a adição de duas novas classes de tamanho de janela de largura: grande e extragrande.

As classes de tamanho de janela são nosso conjunto oficial e específico de pontos de interrupção de janela de visualização que ajudam você a projetar e desenvolver layouts adaptáveis. Com a versão 1.5, estamos estendendo essas orientações para telas que vão além dos tablets típicos.

Confira os novos pontos de interrupção de largura:

  • Grande:para larguras entre 1.200 dp e 1.600 dp
  • Extragrande:para larguras ≥ 1.600 dp
window_size_classes_width.png

As diferentes classes de tamanho de janela com base na largura da tela. 

Por que eles são importantes?

A partir do Android 16 QPR1 Beta 2, o Android oferece suporte a telas conectadas, permitindo que os usuários conectem uma tela externa ao dispositivo e a transformem em uma ferramenta semelhante a um computador com uma tela grande.

ADB_5350_asset.gif

Smartphone conectado a uma tela externa, com uma sessão de computador na tela externa. 

Com esse novo recurso disponível, é fundamental ter orientações específicas para incluir telas maiores. 

Nessas superfícies muito grandes, simplesmente aumentar o layout expandido de um tablet nem sempre é a melhor experiência do usuário. Um cliente de e-mail, por exemplo, pode mostrar dois painéis (uma caixa de correio e uma mensagem) na classe de tamanho de janela expandida. No entanto, em um monitor de computador extragrande, o cliente de e-mail pode exibir três ou até quatro painéis de forma elegante, talvez uma caixa de correio, uma lista de mensagens, o conteúdo completo da mensagem e um painel de calendário/tarefas, tudo de uma vez.

Ao fornecer pontos de interrupção oficiais para tamanhos de exibição muito grandes, a WindowManager 1.5 oferece um indicador claro para introduzir layouts projetados especificamente para uma experiência de computador produtiva e com muitas informações.

As classes de tamanho de janela podem ser calculadas usando computeWindowSizeClass(), que é uma função de extensão da biblioteca androidx.window.core.layout que estende o tipo Set<WindowSizeClass>

Para incluir as novas classes de tamanho de janela no seu projeto, basta chamar a função do conjunto WindowSizeClass.BREAKPOINTS_V2 em vez de WindowSizeClass.BREAKPOINTS_V1:

  val currentWindowMetrics =

    WindowMetricsCalculator.getOrCreate()

    .computeCurrentWindowMetrics(LocalContext.current)


val sizeClass = WindowSizeClass.BREAKPOINTS_V2

    .computeWindowSizeClass(currentWindowMetrics)


Em seguida, aplique o layout correto quando tiver certeza de que o app tem pelo menos esse espaço:

  if(sizeClass.isWidthAtLeastBreakpoint(

    WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){

    ...

    // window is at least 1200 dp wide


}

Bibliotecas adaptáveis

A biblioteca adaptável do Compose Material 3 ajuda a criar interfaces adaptáveis que se ajustam automaticamente de acordo com as configurações atuais da janela, como classes de tamanho de janela ou posturas do dispositivo. 

A boa notícia é que a biblioteca já está atualizada com os novos pontos de interrupção. A partir da versão 1.2 (agora na fase de candidato a lançamento), as funções de diretiva de scaffold de painel padrão oferecem suporte a classes de tamanho de largura de janela grande e extragrande.

Você só precisa ativar declarando no arquivo de build do Gradle que quer usar os novos pontos de interrupção:

  currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

Outras melhorias

  • Incorporação de atividades: salvamento e restauração automáticos: a WindowManager agora pode salvar e restaurar automaticamente o estado das divisões de incorporação de atividades. Isso ajuda a preservar o layout do usuário durante a recriação do processo, levando a uma experiência mais estável e consistente. Os desenvolvedores não precisam mais salvar e restaurar o estado manualmente, mas podem simplesmente ativar o recurso automático definindo a propriedade EmbeddingConfiguration#isAutoSaveEmbeddingState.
  • WindowMetrics expandidas: agora é possível calcular WindowMetrics de um contexto de aplicativo, não apenas de um contexto de atividade. Isso oferece mais flexibilidade para acessar informações da janela de diferentes partes do app.

Como começar

Para começar a usar as novas classes de tamanho grande e extragrande e outros recursos da versão 1.5 nos seus projetos Android, atualize as dependências do app em build.gradle.kts para a versão estável mais recente:

  dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

A WindowManager 1.5 é mais um passo para a criação de apps totalmente adaptáveis que funcionam em todos os formatos do Android. Confira as notas de lançamento oficiais para uma lista completa de mudanças e correções de bugs.

Divirta-se com os códigos!

Escrito por:

Continuar lendo