Notícias sobre produtos

A versão 1.5 do Jetpack WindowManager está estável

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

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

Esta versão se baseia na forte base de adaptabilidade do WindowManager, facilitando ainda mais a criação de interfaces adaptáveis e refinadas que ficam ótimas em todos os tamanhos de tela. À medida que o ecossistema Android continua crescendo, os usuários interagem com apps em uma variedade maior de dispositivos do que nunca: de smartphones e dobráveis a tablets, telas conectadas, Chromebooks e até telas de carro no modo estacionado.

O WindowManager 1.5 se concentra em oferecer ferramentas melhores para esse ambiente de dispositivos diversificado.

Novidades da WindowManager 1.5

Esta versão estável apresenta novos pontos de interrupção para telas muito grandes, melhora 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 essa orientação para telas que vão além dos tablets típicos.

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

  • Grande:para larguras entre 1200 dp e 1600 dp
  • Extragrande:para larguras ≥1600 dp
window_size_classes_width.png

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

Por que elas 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 o 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 sobre como incluir telas maiores. 

Nessas superfícies muito grandes, simplesmente aumentar a escala de um layout expandido de tablet nem sempre é a melhor experiência do usuário. Por exemplo, um cliente de e-mail pode mostrar dois painéis (uma caixa de e-mail e uma mensagem) na classe de tamanho de janela "Expandida". Mas em um monitor de mesa 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 agenda/tarefas, tudo de uma vez.

Ao fornecer pontos de interrupção oficiais para tamanhos de exibição muito grandes, o WindowManager 1.5 oferece um sinal 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 da 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 Release Candidate), as funções de diretiva de estrutura de painel padrão são compatíveis com classes de tamanho de largura de janela grande e extra grande.

Basta declarar no arquivo de build do Gradle que você quer usar os novos pontos de interrupção:

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

Outras melhorias

  • Incorporação de atividades: salvamento e restauração automáticos: agora o WindowManager 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, resultando em uma experiência mais estável e consistente. Os desenvolvedores não precisam mais salvar e restaurar o estado manualmente. Basta ativar a opção automática 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 do 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")

}

O 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 da versão oficiais para uma lista completa de mudanças e correções de bugs.

Divirta-se com os códigos!

Escrito por:

Continuar lendo