WindowManager

A biblioteca WindowManager do Jetpack permite que os desenvolvedores de aplicativos ofereçam suporte aos novos formatos de dispositivo e a ambientes de várias janelas. A versão inicial é direcionada a dispositivos dobráveis, mas as versões futuras serão oferecidas para mais tipos de exibição e recursos de janela.
Atualização mais recente Versão estável Versão candidata a lançamento Versão Beta Versão Alfa
16 de outubro de 2024 1.3.0 - - 1.4.0-alpha05

Declarar dependências

Para acrescentar uma dependência na WindowManager, é necessário adicionar o repositório Maven do Google ao projeto. Consulte o Repositório Maven do Google para ver mais informações.

Adicione as dependências dos artefatos necessários no arquivo build.gradle para seu app ou módulo:

Groovy

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

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

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.4

Versão 1.4.0-alpha05

16 de outubro de 2024

Lançamento de androidx.window:window-*:1.4.0-alpha05. A versão 1.4.0-alpha05 contém estas confirmações.

Novos recursos

  • Adicione funções de conveniência para receber widthDp e heightDp de WindowMetrics.

Mudanças na API

  • Adicione widthDp e heightDp a WindowMetrics. (Ide026).
  • Remoção da API experimental WindowInsets (I68a71).
  • Os nomes dos métodos de verificação de limites foram atualizados para isAtLeast (Ib0ab7).

Versão 1.4.0-alpha04

2 de outubro de 2024

Lançamento de androidx.window:window-*:1.4.0-alpha04. A versão 1.4.0-alpha04 contém estas confirmações.

Mudanças na API

  • Um método foi adicionado para calcular o WindowSizeClass de WindowMetrics. (874dba).
  • Mude os métodos WindowSizeClass para containsWidthDp, containsHeightDp e containsWindowSizeDp para maior clareza. (fa760d).
  • Converta WindowAreaController em uma classe base abstrata. (I90893).

Correções de bugs

  • Foi adicionado suporte a limites relativos ao criar um FoldingFeature de teste. (2e6b3e).
  • Correções gerais de bugs ao selecionar um WindowSizeClass.

Versão 1.4.0-alpha03

18 de setembro de 2024

Lançamento de androidx.window:window-*:1.4.0-alpha03. A versão 1.4.0-alpha03 contém estas confirmações.

Novos recursos

  • Um método utilitário foi adicionado para receber um WindowSizeClass de WindowMetrics. (I83f1f).
  • isAtLeast foi renomeado como containsBreakpoint. (I85b47).
  • Adição de sobrecarga a computeWindowSizeClass usando números flutuantes. (I3dcb2, b/364677934, b/364677802, b/364680886).

Correções de bugs

  • Adicione pontos de interrupção ausentes ao conjunto de pontos de interrupção WindowSizeClass padrão.
  • Correção de um bug em que as dimensões compactas não eram selecionadas corretamente em alguns casos

Versão 1.4.0-alpha02

4 de setembro de 2024

Lançamento de androidx.window:window-*:1.4.0-alpha02. A versão 1.4.0-alpha02 contém estas confirmações.

Novos recursos

Foi adicionado suporte a WindowSizeClass personalizado.

  • Abrir o construtor para WindowSizeClass para que os desenvolvedores possam usar o próprio.
  • Foram adicionados métodos de utilitário isAtLeast para que os desenvolvedores possam processar uma variedade de valores WindowSizeClass.
  • Adicione uma função de extensão em Set<WindowSizeClass> para calcular a melhor correspondência do conjunto.
  • Foram adicionadas constantes para os pontos de interrupção recomendados do Android.
  • Adicione o conjunto de pontos de interrupção correspondente aos pontos de interrupção recomendados do Android.

Mudanças na API

  • Atualizamos os nomes dos métodos de limites para WindowSizeClass. (If89a6).
  • Atualização da API WindowSizeClass para oferecer suporte à adição de novos valores de ponto de interrupção no futuro. Em vez de ter limites absolutos, usamos os limites mínimos e recomendamos que os desenvolvedores usem verificações de limite mínimo ao processar um WindowSizeClass. O WindowWidthSizeClass e o WindowHeightSizeClass atuais serão descontinuados, porque não serão mais desenvolvidos. (I014ce).

Versão 1.4.0-alpha01

7 de agosto de 2024

Lançamento de androidx.window:window-*:1.4.0-alpha01. A versão 1.4.0-alpha01 contém estas confirmações.

Novos recursos

  • A fixação de ActivityStack permite que os apps fixem o conteúdo em um contêiner e isolem a navegação do outro.
  • O Divisor interativo permite que os apps mostrem um divisor fixo ou arrastável entre as duas atividades em uma apresentação dividida.
  • O escurecimento da caixa de diálogo em tela cheia permite que os apps especifiquem a área de escurecimento da caixa de diálogo para escurecer toda a janela de tarefas ou apenas o contêiner que mostra a caixa de diálogo.
  • O callback de informações da janela de atividade incorporada permite que os apps recebam atualizações contínuas da janela de atividade incorporada.
  • O segundo plano de animação incorporado permite que os apps especifiquem o segundo plano da animação, melhorando a qualidade da animação de transição quando ActivityEmbedding é usado.
  • O gerenciamento de ActivityStack aprimorado permite que os apps tenham mais controle sobre o ActivityStacks quando o ActivityEmbedding é usado, incluindo:
  • Como iniciar uma atividade em um ActivityStack especificado
  • Como encerrar uma ActivityStack

Mudanças na API

  • Uma nova API WindowInfoTracker#supportedPostures:

    • Uma API para determinar se o dispositivo oferece suporte ao modo de mesa para dispositivos dobráveis. Adiciona WindowAreaSessionPresenter#getWindow.
  • Foram adicionadas APIs para oferecer suporte à fixação de ActivityStack:

    • Classe SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Adicionar APIs para ativar e configurar o divisor interativo

    • Classe DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • Foram adicionadas APIs para definir EmbeddingConfiguration e DimAreaBehavior para caixas de diálogo.

    • Classe EmbeddingConfiguration
    • Classe DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • APIs foram adicionadas para receber atualizações de informações da janela de atividade incorporada.

    • Classe EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • Adição de APIs para definir o plano de fundo da animação de incorporação

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • Adição de APIs para concluir ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • Adição de APIs para definir a inicialização de ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • As APIs a seguir são estáveis e não são mais experimentais:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (movido de SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • Foram adicionadas APIs para 1.4. (I56774).

Correções de bugs

  • Correção de um bug em determinados dispositivos em que "INDISPONÍVEL" era retornado em vez de "ATIVO" quando uma sessão estava ativa.
  • O suporte para transferActivityToWindowArea foi removido em dispositivos com vendorApiLevel 2 devido ao suporte instável da API.
  • Introdução da API para ativar a opção de arrastar para tela cheia para o divisor arrastável de incorporação de atividades. (I645c9).
  • Permitir que os apps desativem animações ActivityEmbedding usando parâmetros de animação para SplitAttributes. (Idc01a).
  • O contorno manual de acesso a novas APIs da plataforma foi removido, já que isso acontece automaticamente pelo modelagem de API ao usar o R8 com o AGP 7.3 ou mais recente (por exemplo, o R8 versão 3.3) e para todos os builds ao usar o AGP 8.1 ou mais recente (por exemplo, o D8 versão 8.1). Os clientes que não estão usando o AGP precisam fazer upgrade para a versão 8.1 ou mais recente do D8. Veja mais detalhes neste artigo. (Ia60e0, b/345472586).
  • Permitir que as extensões usem parâmetros de animação para SplitAttributes para que o dispositivo possa usá-los para transições de animação. (Iede00).
  • Ocultar APIs de sobreposição (Ic4251).
  • Introdução de APIs para configurar o divisor fixo ou arrastável para a divisão (Ia7a78).
  • A densidade foi adicionada a WindowMetrics (Id6723).
  • Adição de uma API para acessar SupportedPostures. (If557a).
  • O setLaunchingActivityStack foi removido da API experimental (I191cf).
  • Introdução de ActivityEmbeddingController#embeddedActivityWindowInfo (I24312).
  • Descontinuação de #getToken e adição de #getActivityStackToken (Ie0471).
  • Introdução do adaptador de callback para a API de fluxo embeddedActivityWindowInfo (Ida77f).
  • Adição de um adaptador de callback para a API de fluxo overlayInfo (I7264f).
  • Introdução de WindowSdkExtensionsRule para substituir extensionsVersion para testes. (Ifb928).
  • - Migração de #setLaunchingActivityStack para o pacote para compatibilidade com os usos de ActivityOptionsCompat.
    • Os usuários precisam transmitir activityOptions.toBundle em vez de ActvityOptions.
    • O #setLaunchingActivityStack(Activity) foi removido. Os usuários precisam migrar para usar ActivityEmbeddingController#getActivityStac(Activity) para receber um ActivityStack e transmitir o ActivityStack para #setLaunchingActivityStack. (Ie0ccc).
  • - Introdução de ActivityStack.Token e SpltInfo.Token como um identificador para comunicação entre o Jetpack do WM e as extensões.
    • APIs descontinuadas/substituídas para receber/retornar o token em vez de IBinder. (I12b24).
  • - Apresente ActivityEmbeddingController#invalidateVisibleActivityStacks
    • O SplitController#invalidateTopVisibleSplitAttributes foi removido porque o recurso foi consolidado no #invalidateVisibleActivityStacks (I02ef5).
  • - Adição de API para definir a configuração de embedding. (I59a4a).
  • - Adição de APIs androidx.Window ActivityStack para fixar/desfixar o topo
    • Atualização do app de demonstração para permitir a fixação/remoção da parte de cima ActivityStack (I24dd3).
  • #finishActivityStacks e ActivityEmbeddingOptions foram adicionados novamente (Ic1ab3).
  • Remover APIs instáveis. (Ibc534, b/302380585).

Versão 1.3

Versão 1.3.0

29 de maio de 2024

Lançamento de androidx.window:window-*:1.3.0. A versão 1.3.0 contém estas confirmações.

Mudanças importantes desde a versão 1.2.0

  • Suporte do Kotlin Multiplatform para classes de tamanho de janela.

Versão 1.3.0-rc01

14 de maio de 2024

O WindowManager Jetpack 1.3 oferece suporte ao Kotlin Multiplatform para recursos do WindowSizeClass, além de várias correções de bugs.

Lançamento de androidx.window:window-*:1.3.0-rc01. A versão 1.3.0-rc01 contém estas confirmações.

Versão 1.3.0-beta02

1º de maio de 2024

Lançamento de androidx.window:window-*:1.3.0-beta02. A versão 1.3.0-beta02 contém estas confirmações.

Mudanças na API

  • Remoção do suporte para a criação e o uso de WindowSizeClasss personalizados. (Id1143).

Correções de bugs

  • Correção de KotlinReflectionInternalError causada pelo proguard que remove alguns arquivos em determinadas implementações de dispositivos. (I01b02).

Versão 1.3.0-beta01

3 de abril de 2024

Lançamento de androidx.window:window-*:1.3.0-beta01. A versão 1.3.0-beta01 contém estas confirmações.

Versão 1.3.0-alpha03

6 de março de 2024

Lançamento de androidx.window:window-*:1.3.0-alpha03. A versão 1.3.0-alpha03 contém estas confirmações.

Mudanças na API

  • Divida WindowSizeClassUtil em métodos mais focados. (Ie9292).
  • Restaurar WindowSizeClass#compute (I21355, b/324293374).

Correções de bugs

  • Correção de falha em que o contexto fornecido não era desempacotado corretamente (94d10ce , b/318787482).

Versão 1.3.0-alpha02

7 de fevereiro de 2024

Lançamento de androidx.window:window-*:1.3.0-alpha02. A versão 1.3.0-alpha02 contém estas confirmações.

Novos recursos

  • Atualizações feitas na API da classe de tamanho de janela para melhorar a flexibilidade dos desenvolvedores que querem usar as próprias classes de tamanho.

Mudanças na API

  • Adicione restrições de altura ao seletor de largura. (I23393).
  • Adicione funções utilitárias para escolher um WindowSizeClass de um conjunto. Adição de funções de pontuação experimental para que os desenvolvedores possam escrever os próprios seletores. Adicione uma função de extensão de seletor para escolher o WindowSizeClass mais amplo dentro de um limite. (I0c944).
  • Abra o construtor WindowSizeClass para que pontos de interrupção personalizados possam ser adicionados. (Ic1ff3).
  • Adicione uma função de conveniência para criar uma classe de tamanho com base na largura, altura e densidade. (If67f4).

Correções de bugs

  • Correção de exceção quando o valor de ponto flutuante é truncado para 0. (272ffac).

Versão 1.3.0-alpha01

15 de novembro de 2023

Lançamento de androidx.window:window-*:1.3.0-alpha01. A versão 1.3.0-alpha01 contém estas confirmações.

Novos recursos

  • Exposição de APIs de janela experimentais para acessar a tela traseira.
  • As APIs de teste para criar um FoldingFeature agora são estáveis.
  • As APIs de teste para configurar valores falsos de ActivityEmbedding agora são estáveis.
  • WindowLayoutInfoPublisherRule agora informa a substituição ao receber um valor de um UiContext.
  • WindowInfoTracker informa os dados de dobramento do elemento para os parâmetros UiContext.
  • Exiba a versão das extensões no dispositivo.
  • Constantes WindowProperties para substituições do usuário por app:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE: informa ao sistema que o app desativou a substituição de compatibilidade de proporção do usuário.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE: informa ao sistema que o app desativou a opção de tela cheia das configurações de compatibilidade de proporção do usuário

Versão 1.2

Versão 1.2.0

15 de novembro de 2023

Lançamento de androidx.window:window-*:1.2.0. A versão 1.2.0 contém estas confirmações.

Mudanças importantes desde a 1.1.0

  • Exposição de APIs de janela experimentais para acessar a tela traseira.
  • As APIs de teste para criar um FoldingFeature agora são estáveis.
  • As APIs de teste para configurar valores falsos de ActivityEmbedding agora são estáveis.
  • WindowLayoutInfoPublisherRule agora informa a substituição ao receber um valor de um UiContext.
  • WindowInfoTracker informa os dados de dobramento do elemento para os parâmetros UiContext.
  • Exiba a versão das extensões no dispositivo.

Versão 1.2.0-rc01

1º de novembro de 2023

Lançamento de androidx.window:window-*:1.2.0-rc01. A versão 1.2.0-rc01 contém estas confirmações.

Novos recursos

  • Exposição de APIs de janela experimentais para acessar a tela traseira.
  • As APIs de teste para criar um FoldingFeature agora são estáveis.
  • As APIs de teste para configurar valores falsos de ActivityEmbedding agora são estáveis.
  • WindowLayoutInfoPublisherRule agora informa a substituição ao receber um valor de um UiContext.
  • WindowInfoTracker informa os dados de dobramento do elemento para os parâmetros UiContext.
  • Exiba a versão das extensões no dispositivo.

Versão 1.2.0-beta04

18 de outubro de 2023

Lançamento de androidx.window:window-*:1.2.0-beta04. A versão 1.2.0-beta04 contém estas confirmações.

Mudanças na API

Versão 1.2.0-beta03

20 de setembro de 2023

Lançamento de androidx.window:window-*:1.2.0-beta03. A versão 1.2.0-beta03 contém estas confirmações.

Novos recursos

  • Adição de verificações de RequiresApi para APIs que precisam de uma versão específica de extensões para funcionar corretamente.
  • Adicione uma API para expor a versão das extensões no dispositivo.

Mudanças na API

  • Anotação da versão necessária da extensão do SDK da janela em APIs públicas.
    • Remova isXXXSupported no componente de incorporação de atividades. (Ie3dae).
  • Apresente WindowSdkExtensions para informar a versão da extensão no dispositivo.
    • Introduza RequiresWindowSdkExtension para anotar a versão mínima necessária da extensão. (I05fd4).
  • Torna WindowAreaInfo#getCapability não anulável. (I17048).

Versão 1.2.0-beta01

26 de julho de 2023

Lançamento de androidx.window:window-*:1.2.0-beta01. A versão 1.2.0-beta01 contém estas confirmações.

Novos recursos

  • Exposição de APIs de janela experimentais para acessar a tela traseira.
  • As APIs de teste para criar um FoldingFeature agora são estáveis.
  • As APIs de teste para configurar valores falsos de ActivityEmbedding agora são estáveis.
  • WindowLayoutInfoPublisherRule agora informa a substituição ao receber um valor de um UiContext.
  • WindowInfoTracker informa os dados de dobramento do elemento para os parâmetros UiContext.

Mudanças na API

  • As APIs WindowArea foram marcadas como experimentais para permitir que as mudanças continuem em uma versão estável na 1.3 (I857f5).
  • Os arquivos da API foram atualizados para anotar a supressão de compatibilidade (I8e87a, b/287516207).

Versão 1.2.0-alpha03

21 de junho de 2023

Lançamento de androidx.window:window-*:1.2.0-alpha03. A versão 1.2.0-alpha03 contém estas confirmações.

Novos recursos

  • Remoção de APIs descontinuadas da plataforma da API.
  • Foram adicionadas APIs para oferecer suporte a telas simultâneas.
  • Adicione uma propriedade para desativar a substituição forçada de redimensionamento.
  • Adição de propriedade para desativar a substituição da proporção mínima.
  • Estabilização de ActivityEmbeddingRule para oferecer suporte a testes de unidade relacionados à incorporação de atividades.

Mudanças na API

  • As APIs descontinuadas foram removidas (I18d39).
  • Adicionar suporte a telas simultâneas. (Ifcbb0).

Correções de bugs

  • Adição de uma propriedade de compatibilidade de desativação para a substituição de redimensionamento forçado (Ie7ab1).
  • SESSION_STATE_CONTENT_INVISIBLE foi removido da interface de extensões. (I6ed19).
  • Estabilização de ActivityEmbeddingRule para oferecer suporte a testes de unidade em relação à incorporação de atividades. (I8d6b6).
  • Adição de uma propriedade de compatibilidade de desativação para a substituição da proporção mínima. (I66390).
  • As APIs WindowArea descontinuadas foram removidas (Ieb67c).
  • Renomeie a propriedade do loop de solicitação de orientação para PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd).
  • Os nomes de constantes da sessão da área da janela foram atualizados (I83675).
  • Adição de uma propriedade de compatibilidade de desativação que ignora o loop de solicitação de orientação quando detectado (I0a7a2).
  • Adicione WindowAreaComponent#STATUS_ACTIVE para indicar que o recurso já está ativo. (I62bc3).
  • Adição de APIs RearDisplayPresentationMode (I0401c).
  • Remoção da API de cor de plano de fundo para a versão estável (I34c3e).
  • Ocultar APIs de área da janela. (I39de0).
  • Adicione métodos para substituir o SplitInfo em SplitController. Foram adicionados métodos de teste para criar o número duplo para SplitInfo e ActivityStack. (Icd69f).
  • Tornar a tag opcional para ActivityRule.Builder. (Ib0b44).
  • RatioSplitType, ExpandContainersSplit e HingeSplitType foram removidos. Agora eles são SplitType.
    • Substituir #splitEqually(), #expandContainers() e #splitByHinge por SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND e SPLIT_TYPE_HINGE
    • A funcionalidade para definir o tipo de fallback do tipo de divisão da articulação foi removida. Se o tipo de divisão de articulação não puder ser aplicado devido ao estado atual do dispositivo ou da janela, ele vai dividir o contêiner de tarefa pai igualmente. Use SplitController#setSplitAttributesCalculator para personalizar o tipo de divisão de fallback. (Ifcc59).
  • Descontinuar add/removeSplitCallback
    • Mover add/removeSplitCallback para SplitControllerCallbackAdapter
    • Foi adicionado suporte a Flow para receber a lista SplitInfo (I7f1b6).
  • Uma regra de teste foi adicionada para ActivityEmbeddingController (I42e9b).
  • ActivityOptionsCompat foi renomeado como ActivityEmbeddingOptions (I89301).
  • Adição de splitSupportStatus para indicar se a incorporação de atividades está disponível (I10024).
  • Introduza SplitAttributes.BackgroundColor para representar melhor o valor DEFAULT. Foi esclarecido que a cor de plano de fundo de animação não opaca não é compatível. Portanto, todas as cores não opacas serão tratadas como padrão, o que significa usar a cor de plano de fundo da janela do tema atual. (Ic6b95).
  • Substituição de alwaysAllow() e alwaysDisallow() por ALWAYS_ALLOW e ALWAYS_DISALLOW. (I3057b).
  • Adição de APIs para SplitRule, SplitAttributes, SplitAttributesCalculator (I92d23).
  • Adicionar TestActivityStack para criar ActivityStack para testes
    • Adicione TestSplitInfo para criar SplitInfo para testes. (I8e779).
  • Adição de uma maneira de criar SplitAttributesCalculatorParams falsos para que os desenvolvedores possam verificar o SplitAttributesCalculator personalizado (Id4a6e).
  • Adição de WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) e WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f).

Versão 1.2.0-alpha02

7 de junho de 2023

Lançamento de androidx.window:window-*:1.2.0-alpha02. A versão 1.2.0-alpha02 contém estas confirmações.

Novos recursos

  • A API de teste foi atualizada para ter uma constante para recursos de dobramento não especificados.
  • A substituição com WindowLayoutInfoPublishRule vai substituir todos os valores de windowLayoutInfo, incluindo a API baseada em contexto.

Mudanças na API

  • Adição de constante para o recurso de dobramento central não especificado. (I7530c).

Correções de bugs

  • Atualização de WindowLayoutInfoPublishRule para oferecer suporte a substituições em WindowLayoutInfo com base em Context. (I2037a).

Versão 1.2.0-alpha01

24 de maio de 2023

Lançamento de androidx.window:window-*:1.2.0-alpha01. A versão 1.2.0-alpha01 contém estas confirmações.

Novos recursos

Estabilização de APIs de teste em torno da incorporação de atividades e WindowLayoutInfoTracker. A versão ActivityEmbeddingRule foi promovida a estável. A versão WindowMetricsCalculatorRule foi promovida a estável. As funções utilitárias para criar uma FoldingFeature para teste foram promovidas para a versão estável.

Mudanças na API

  • Estabilização de ActivityEmbeddingRule para oferecer suporte a testes de unidade em relação à incorporação de atividades. (I8d6b6).
  • WindowMetrisCalculatorTestRule está estável, permitindo métricas de stub para testes de JVM. Recomendamos o uso de um emulador para resultados precisos.
  • Estabilização de APIs de teste para WindowLayoutInfo para oferecer suporte a testes de JVM. (Ie036e).
  • Adicionado IntRange para testar valores de recursos de dobramento. (I69f7d).

Versão 1.1

Versão 1.1.0

7 de junho de 2023

Lançamento de androidx.window:window-*:1.1.0. A versão 1.1.0 contém estas confirmações.

Mudanças importantes desde a versão 1.0.0

Incorporação de atividades

  • Adicionamos PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED como uma propriedade booleana da tag <application> no manifesto do app.
  • isSplitSupported foi descontinuado e substituído por splitSupportStatus para fornecer informações mais detalhadas sobre por que o recurso de divisão não está disponível.
  • A classe aninhada SplitController.SplitSupportStatus foi adicionada para fornecer constantes de estado para a propriedade splitSupportStatus.
  • Refatoração de SplitController para vários módulos:
    • Módulo ActivityEmbeddingController para APIs relacionadas a Activity ou ActivityStack.
    • isActivityEmbedded foi movido de SplitController para ActivityEmbeddingController.
    • Módulo RuleController para operações relacionadas a EmbeddingRule:
    • APIs SplitController removidas:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • APIs RuleController foram adicionadas:
    • addRule(): adiciona ou atualiza uma regra com a mesma tag.
    • removeRule(): remove uma regra da coleção de regras registradas.
    • setRules(): define uma coleção de regras.
    • clearRules(): remove todas as regras registradas.
    • parseRules(): analisa regras de definições de regras XML.
  • Todos os módulos exigem que um contexto seja inicializado pelo método #getInstance(), incluindo:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Adição da classe EmbeddingAspectRatio para definir constantes de comportamento semelhantes a enum relacionadas à proporção da tela.
  • A classe SplitAttributes foi adicionada para definir o layout dividido.
  • Foram adicionadas funções de calculadora SplitAttributes a SplitController para personalizar layouts divididos:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() para verificar se as APIs SplitAttributesCalculator têm suporte no dispositivo
  • Campo EmbeddingRule#tag adicionado.
  • Atualizações da API em SplitRule:
    • defaultSplitAttributes adicionado: define o layout de divisão padrão de uma divisão e substitui splitRatio e layoutDirection.
    • A tradução das propriedades XML splitRatio e splitLayoutDirection foi adicionada a defaultSplitAttributes.
    • As definições de dimensão mínima foram alteradas para usar pixels de densidade independente (dp) em vez de pixels.
    • Adição de minHeightDp com o valor padrão 600dp.
    • Mudamos minWidth para minWidthDp com o valor padrão 600dp.
    • Mudamos minSmallestWidth para minSmallestWidthDp com o valor padrão 600dp.
    • maxAspectRatioInHorizontal foi adicionado com o valor padrão ALWAYS_ALLOW.
    • Foi adicionado maxAspectRatioInPortrait com o valor padrão 1.4.
    • A classe aninhada FinishBehavior foi definida para substituir as constantes de comportamento de finalização.
    • As mudanças de propriedade foram aplicadas à classe Builder aninhada de SplitPairRule e SplitPlaceholderRule.
  • SplitInfo#getSplitRatio() foi substituído por SplitInfo#getSplitAttributes() para fornecer mais informações relacionadas à divisão.

WindowLayout

  • Foi adicionado suporte experimental ao contexto da IU de não atividade a WindowInfoTracker.
  • Foi adicionado um contexto experimental de interface não relacionado a atividades ao WindowMetricsCalculator.

Etapas da migração

  • Para permitir que a incorporação de atividades mostre atividades em divisões, os apps precisam adicionar a propriedade PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED à tag <application> do manifesto: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Isso permite que o sistema otimize os comportamentos de divisão para um aplicativo com antecedência.
  • Razão SplitInfo
    • Verifique se a divisão atual está empilhada: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Confira a proporção atual: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Migrações SplitController:
    • SplitController.getInstance() muda para SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) muda para RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) muda para ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) muda para RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) muda para RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() muda para RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() muda para RuleController.getInstance(Context).getRules().
  • Migrações de propriedade SplitRule:
    • minWidth e minSmallestWidth agora usam unidades de dp em vez de pixels. Os apps podem usar a seguinte chamada: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) ou simplesmente dividir minWith em pixels por displayMetrics#density.
  • As constantes de comportamento de finalização precisam ser migradas para constantes de classe semelhantes a tipo enumerado FinishBehavior:
    • FINISH_NEVER muda para FinishBehavior.NEVER.
    • FINISH_ALWAYS muda para FinishBehavior.ALWAYS.
    • FINISH_ADJACENT muda para FinishBehavior.ADJACENT.
  • A direção do layout precisa ser migrada para SplitAttributes.LayoutDirection:
    • ltr muda para SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl muda para SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale muda para SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio precisa ser migrado para SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migrações:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) muda para kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600..
    • setLayoutDirection(layoutDirection) e setSplitRatio(ratio) são alterados para kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • setFinishPrimaryWithSecondary e setFinishSecondaryWithPrimary usam as constantes semelhantes a tipo enumerado FinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisões em dispositivos retrato.
  • SplitPlaceholder.Builder migrações:
    • Tem apenas os parâmetros filters e placeholderIntent. Outras propriedades são movidas para setters. Consulte "Migrações de SplitPairRule.Builder" para mais detalhes.
    • setFinishPrimaryWithPlaceholder recebe as constantes semelhantes a tipo enumerado FinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.
    • setLayoutDirection(layoutDirection) e setSplitRatio(ratio) mudam para: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisões em dispositivos retrato.

Versão 1.1.0-rc01

10 de maio de 2023

Lançamento de androidx.window:window-*:1.1.0-rc01. A versão 1.1.0-rc01 contém estas confirmações.

Novos recursos

  • A ActivityEmbedding foi lançada como uma API estável.
  • Várias correções de bugs.

Versão 1.1.0-beta02

5 de abril de 2023

Lançamento de androidx.window:window-*:1.1.0-beta02. A versão 1.1.0-beta02 contém estas confirmações.

Novos recursos

  • Correções internas e limpeza.

Versão 1.1.0-beta01

22 de março de 2023

Lançamento de androidx.window:window-*:1.1.0-beta01. A versão 1.1.0-beta01 contém estas confirmações.

Incorporação de atividades

  • Adicionamos PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED como uma propriedade booleana da tag <application> no manifesto do app.
  • isSplitSupported foi descontinuado e substituído por splitSupportStatus para fornecer informações mais detalhadas sobre por que o recurso de divisão não está disponível.
  • A classe aninhada SplitController.SplitSupportStatus foi adicionada para fornecer constantes de estado para a propriedade splitSupportStatus.
  • Refatoração de SplitController para vários módulos:
    • Módulo ActivityEmbeddingController para APIs relacionadas a Activity ou ActivityStack.
    • isActivityEmbedded foi movido de SplitController para ActivityEmbeddingController.
    • Módulo RuleController para operações relacionadas a EmbeddingRule:
    • APIs SplitController removidas:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Foram adicionadas APIs RuleController:
      • addRule(): adiciona ou atualiza uma regra com a mesma tag.
      • removeRule(): remove uma regra da coleção de regras registradas.
      • setRules(): define uma coleção de regras.
      • clearRules(): remove todas as regras registradas.
      • `parseRules(): analisa regras de definições de regras XML.
  • Todos os módulos exigem que um contexto seja inicializado pelo método #getInstance(), incluindo:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Adição da classe EmbeddingAspectRatio para definir constantes de comportamento semelhantes a enum relacionadas à proporção da tela.
  • A classe SplitAttributes foi adicionada para definir o layout dividido.
  • Foram adicionadas funções de calculadora SplitAttributes a SplitController para personalizar layouts divididos:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() para verificar se as APIs SplitAttributesCalculator têm suporte no dispositivo
  • Campo EmbeddingRule#tag adicionado.
  • Atualizações da API em SplitRule:
    • defaultSplitAttributes adicionado: define o layout de divisão padrão de uma divisão e substitui splitRatio e layoutDirection.
    • A tradução das propriedades XML splitRatio e splitLayoutDirection foi adicionada a defaultSplitAttributes.
    • As definições de dimensão mínima foram alteradas para usar pixels de densidade independente (dp) em vez de pixels.
    • Adição de minHeightDp com o valor padrão 600dp.
    • Mudamos minWidth para minWidthDp com o valor padrão 600dp.
    • Mudamos minSmallestWidth para minSmallestWidthDp com o valor padrão 600dp.
    • maxAspectRatioInHorizontal foi adicionado com o valor padrão ALWAYS_ALLOW.
    • maxAspectRatioInPortrait foi adicionado com o valor padrão 1.4.
    • A classe aninhada FinishBehavior foi definida para substituir as constantes de comportamento de finalização.
    • As mudanças de propriedade foram aplicadas à classe aninhada Builder de SplitPairRule e SplitPlaceholderRule.
  • SplitInfo#getSplitRatio() foi substituído por SplitInfo#getSplitAttributes() para fornecer mais informações relacionadas à divisão.

WindowLayout

  • Adição de suporte a contexto de interface de não atividade a WindowInfoTracker.
  • Foi adicionado um contexto de interface não relacionado a atividades a WindowMetricsCalculator.

Etapas da migração

  • Para permitir que a incorporação de atividades mostre atividades em divisões, os apps precisam adicionar a propriedade PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED à tag <application> do manifesto: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Isso permite que o sistema otimize os comportamentos de divisão de um aplicativo com antecedência.
  • Razão SplitInfo
    • Verifique se a divisão atual está empilhada: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Confira a proporção atual: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController migrações:
    • SplitController.getInstance() muda para SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) muda para RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) muda para ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) muda para RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) muda para RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() muda para RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() muda para RuleController.getInstance(Context).getRules().
  • Migrações de propriedade SplitRule:
    • minWidth e minSmallestWidth agora usam unidades de dp em vez de pixels. Os apps podem usar a seguinte chamada: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) ou simplesmente dividir minWith em pixels por displayMetrics#density.
  • As constantes de comportamento de finalização precisam ser migradas para constantes de classe semelhantes a tipo enumerado FinishBehavior:
    • FINISH_NEVER muda para FinishBehavior.NEVER.
    • FINISH_ALWAYS muda para FinishBehavior.ALWAYS.
    • FINISH_ADJACENT muda para FinishBehavior.ADJACENT.
  • A direção do layout precisa ser migrada para SplitAttributes.LayoutDirection:
    • ltr muda para SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl muda para SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale muda para SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio precisa ser migrado para SplitAttributes.SplitType.ratio(splitRatio).
  • SplitPairRule.Builder migrações:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) muda para kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600..
    • setLayoutDirection(layoutDirection) e setSplitRatio(ratio) mudam para kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ).
    • setFinishPrimaryWithSecondary e setFinishSecondaryWithPrimary usam as constantes semelhantes a tipo enumerado FinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisões em dispositivos retrato.
  • SplitPlaceholder.Builder migrações:
    • Tem apenas os parâmetros filters e placeholderIntent. Outras propriedades são movidas para setters. Consulte "Migrações de SplitPairRule.Builder" para mais detalhes.
    • setFinishPrimaryWithPlaceholder recebe as constantes semelhantes a tipo enumerado FinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.
    • setLayoutDirection(layoutDirection) e setSplitRatio(ratio) mudam para: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) para mostrar divisões em dispositivos retrato.

Versão 1.1.0-alpha06

22 de fevereiro de 2023

Lançamento de androidx.window:window-*:1.1.0-alpha06. A versão 1.1.0-alpha06 contém estas confirmações.

Novos recursos

  • Exposição da versão experimental para acessar WindowLayoutInfo de um contexto de interface.

Mudanças na API

  • Adição de splitSupportStatus para indicar se a incorporação de atividades está disponível (I10024).
  • A API WindowLayoutInfo de contexto de interface agora é experimental (I58ee0).
  • Apresenta WindowAreaController e APIs para permitir que o modo RearDisplay mova a janela atual para a tela alinhada à câmera traseira (Iffcbf).
  • Atualização da cor padrão do plano de fundo (I1ac1b).
  • Adição dos parâmetros SplitAttributes (I18bdd).
  • Adição de APIs para SplitRule, SplitAttributes, SplitAttributesCalculator (I92d23).
  • Melhoria das APIs relacionadas a maxAspectRatio:
    1. Substituição de alwaysAllow() e alwaysDisallow() por ALWAYS_ALLOW e ALWAYS_DISALLOW.
    2. Atualização da documentação da API de @see com documentação independente (I3057b).
  • Os seguintes construtores são removidos das APIs públicas porque não podem ser chamados pelos apps.
    • Construtor SplitInfo
    • Construtor ActivityStack (Ide534)
  • A SplitRule agora usa maxAspectRatioInPortrait/Landscape. Ela só permite atividades divididas quando a proporção dos limites pai é menor ou igual ao maxAspectRatio solicitado (Ia5990).
  • Mudança de RuleController#parseRules para estáticas (I785df).
  • Melhoria nas APIs com o ActivityEmbedding
    1. Alinhe a nomenclatura da API: use adicionar/remover para várias instâncias:
    2. Mudança de registerRule para addRule.
    3. Mudança de unregisterRule para removeRule.
    4. Substituição de getSplitRules por getRules, já que ActivityRule não é uma regra de divisão.
    5. Adição de RuleController#setRules para definir várias regras.
    6. Extração de APIs relacionadas a regras de SplitController para o RuleController Singleton. São elas:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Extração de #isActivityEmbedded de SplitController para o ActivityEmbeddingController Singleton. São elas:
    14. isActivityEmbedded
    15. A SplitController#initialize foi removida. Para definir regras com base no arquivo XML, use RuleController#parseRules e #setRules. Antes dessa mudança: SplitController.initialize(context, R.xml.static_rules) Depois dessa mudança: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Não distinguimos mais regras estáticas de regras de ambiente de execução. Sendo assim, chamar #clearRules faz com que todas as regras sejam apagadas, não importa se elas são registradas com definições de regras XML estáticas ou no momento da execução. Para manter o comportamento legado de SplitController#clearRegisteredRules, chame RuleController#parseRules com o ID de recursos XML e chame RuleController#setRules para definir as regras de novo. Antes dessa mudança: SplitController.getInstance(context).clearRegisteredRules() Depois dessa mudança: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967).
  • Melhorias nas APIs SplitRule:
    1. Uso de dimensões mínimas no DP, em vez de pixels, para SplitRule.
    2. Refatoração para que o builder SplitRule use as dimensões mínimas como opcionais (I95f17).
  • Transmissão de um contexto para inicializar o SplitController (I42549).
  • SplitRule#layoutDir foi renomeado como #layoutDirection, e SplitRule Builder#setLayoutDir foi renomeado como Builder#setLayoutDirection (I3f6d1).

Versão 1.1.0-alpha04

9 de novembro de 2022

Lançamento de androidx.window:window-*:1.1.0-alpha04. A versão 1.1.0-alpha04 contém estas confirmações.

Novos recursos

  • Um método foi exposto para determinar se uma ActivityStack está vazia para ActivityEmbedding.
  • As tags experimentais da API foram removidas das APIs ActivityEmbedding.
  • O construtor ActivityRule foi ocultado, já que o Builder é a maneira mais recomendada de construir.
  • Um método experimental foi adicionado para receber WindowInsets nas WindowMetrics.
  • O SplitPlaceholderFinishBehavior foi atualizado para evitar a finalização do marcador. A conclusão do marcador causava um comportamento confuso.

Mudanças na API

  • O valor isEmpty foi tornado público para substituir o isEmpty divertido.
  • As atividades do parâmetro ActivityStack foram renomeadas como activitiesInProcess (Ia5055).
  • ActivityFilter#matchesClassName e ActivityFilter#matchesClassNameOrWildCard foram removidos por serem confusos.
  • O ActivityFilter#componentName abd ActivityFilter#intentAction foi adicionado para permitir que o autor da chamada diferencie filtros diferentes (I41f22).
  • As APIs @Deprecated foram removidas da API experimental (I216b3).
  • O @ExperimentalWindowApi foi removido das APIs Activity Embedding (I69ebe).
  • O construtor de ActivityRule foi ocultado. Use o Builder (If4eb6).
  • APIs foram adicionadas para verificar se uma atividade faz parte do ActivityFilter (Ia43cf).
  • Os arquivos de API foram atualizados para refletir as mudanças nas classes WindowMetrics e WindowMetricsCalculatorCompat (I667fe).
  • O Javadoc e o nome da classe da propriedade ActivityEmbedding foram atualizados (Ia1386).
  • Nomes de tags da propriedade ActivityEmbedding foram adicionados para serem usados em AndroidManifest.xml (Id1ad4).
  • As novas APIs SplitPlaceholderFinishBehavior e SplitPlaceholderRule.finishPrimaryWithPlaceholder foram adicionadas para substituir SplitPlaceholderRule.finishPrimaryWithSecondary, que define quando as atividades de marcador de posição são concluídas e como as atividades associadas na incorporação precisam se comportar (I64647).

Correções de bugs

  • Apresenta WindowAreaController e APIs para permitir que o modo RearDisplay mova a janela atual para a tela alinhada à câmera traseira (I388ab).

Versão 1.1.0-alpha03

27 de julho de 2022

Lançamento de androidx.window:window-*:1.1.0-alpha03. A versão 1.1.0-alpha03 contém estas confirmações.

Novos recursos

  • Atualização dos valores padrão para as regras de incorporação.

Mudanças na API

  • Atualização dos valores padrão para as propriedades da regra de incorporação (Ic4d35).

Versão 1.1.0-alpha02

11 de maio de 2022

Lançamento de androidx.window:window-*:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estas confirmações.

Novos recursos

  • Lançamento das bibliotecas de adaptadores para oferecer suporte a Java e RxJava.

Versão 1.1.0-alpha01

11 de maio de 2022

Lançamento de androidx.window:window-*:1.1.0-alpha01. A versão 1.1.0-alpha01 contém estas confirmações.

Novos recursos

  • Lançamento de adaptadores para oferecer suporte a Java e RxJava.

Versão 1.1.0-alpha01

20 de abril de 2022

Lançamento de androidx.window:window:1.1.0-alpha01. A versão 1.1.0-alpha01 contém estas confirmações.

Novos recursos

  • Um bug em que o app em segundo plano parava de emitir recursos de dobra foi corrigido.
  • Expansão da API ActivityEmbedding experimental.

Mudanças na API

  • Uma API pública para verificar se uma atividade está sendo incorporada (I39eb7).

Correções de bugs

  • APIs que personalizam o comportamento de conclusão para contêineres em divisões de atividade foram adicionadas (I1a1e4).
  • Uma nova opção de configuração para regras de divisões de atividade foi adicionada (Iec6af).

Versão 1.0

Versão 1.0.0

26 de janeiro de 2022

Lançamento de androidx.window:window-*:1.0.0. A versão 1.0.0 contém estas confirmações.

Principais recursos da versão 1.0.0

  • Suporte a smartphones dobráveis com WindowInfoTracker e FoldingFeature. WindowMetricsCalculator para ajudar a calcular as WindowMetrics atuais.

Versão 1.0.0-rc01

15 de dezembro de 2021

Lançamento de androidx.window:window-*:1.0.0-rc01. A versão 1.1.0-rc01 contém estas confirmações.

Novos recursos

  • Foi adicionado suporte a smartphones dobráveis usando a interface WindowInfoTracker.
  • Adição de métodos para calcular as WindowMetrics atuais e máximas.
  • Adição de suporte para APIs de teste.

Versão 1.0.0-beta04

17 de novembro de 2021

androidx.window:window-*:1.0.0-beta04 é lançado. A versão 1.0.0-beta04 contém estas confirmações.

Novos recursos

  • Renomeação de WindowInfoRepository para WindowInfoTracker.
  • A atividade passou a ser uma dependência de método explícita para WindowInfoTracker.
  • Uma TestRule simples foi adicionado a WindowMetricsCalculator para dar suporte a desenvolvedores que usam o Robolectric.

Mudanças na API

  • Foram extraídas extensões (I25a5f).
  • O isEmpty foi adicionado ao ActivityStack (I5a4e6).
  • Renomeação de WindowInfoRepository para WindowInfoTracker.
    • As dependências de java/rxjava/testing foram atualizadas para corresponder a essa mudança (I0da63).
  • Uma regra de teste foi adicionada a uma WindowMetricsCalculator simples (Ibacdb).

Versão 1.0.0-beta03

27 de outubro de 2021

Lançamento de androidx.window:window-*:1.0.0-beta03. A versão 1.0.0-beta03 contém estas confirmações.

Novos recursos

  • APIs experimentais de incorporação de atividade foram adicionadas. Essa versão inicial do layout permite que duas atividades sejam exibidas lado a lado.

Mudanças na API

  • A API currentWindowMetrics foi removida porque não é possível fornecê-la com precisão. Use WindowMetricsCalculator (Icda5f).
  • Atualização da API de extensões (Ica92b).
  • Uma interface foi adicionada a um novo recurso que possibilita incorporar e exibir atividades lado a lado na janela de tarefas mãe (I5711d).
  • Os construtores de WindowMetrics e WindowLayoutInfo foram ocultados. Em vez disso, use as APIs de teste (I5a1b5).
  • Foi adicionada uma API para criar objetos WindowLayoutInfo falsos (I4a2fd).

Correções de bugs

Versão 1.0.0-beta02

1º de setembro de 2021

Lançamento de androidx.window:window-*:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações.

Novos recursos

  • Adição de uma anotação experimental para APIs experimentais (I9f1b6).
  • Adição de um método de teste para criar uma FoldingFeature de teste que aceite um retângulo. Isso facilitará o teste ao usar o Robolectric em vez de uma atividade real (Id1cca).

Versão 1.0.0-beta01

18 de agosto de 2021

Lançamento de androidx.window:window-*:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações.

Novos recursos

  • As constantes antigas foram removidas e FoldingFeature passou a ser uma interface.

Mudanças na API

  • As constantes antigas foram removidas e FoldFeature passou a ser uma interface (I9a2d5).

Correções de bugs

  • As bibliotecas que dependem da Test Core foram atualizadas para a versão 1.4.0 e agora funcionarão com a versão S da Plataforma Android (I88b72, b/189353863).

Versão 1.0.0-alpha10

4 de agosto de 2021

Lançamento de androidx.window:window-*:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações.

Novos recursos

  • A WindowInfoRepo foi renomeada como WindowInfoRepository, e os arquivos e classes correspondentes foram ajustados.
  • As métricas de janela atuais foram convertidas em um fluxo na WindowInfoRepository porque o valor delas pode mudar ao longo do tempo.
  • O WindowInfoRepoJavaAdapter foi renomeado como WindowInfoRepoCallbackAdapter.
  • Adição de um método auxiliar para criar objetos de teste de FoldingFeature.
  • Os pacotes foram atualizados para agrupar classes com base no recurso ao qual elas oferecem suporte.

Mudanças na API

  • O elemento ActivityExt foi renomeado como ActivityExtensions. O Repo foi renomeado como Repository (I61a16).
  • Os pacotes das classes foram atualizados (I23ae2).
  • A classe WindowMetrics foi removida da WindowInfoRepo (I24663).
  • A WindowManager foi removida. Use a WindowInfoRepo.
    • WindowBackend agora é de uso interno (I06d9a).
  • As métricas de janela foram convertidas em um fluxo.
    • O adaptador Java foi renomeado como WindowInfoRepoCallbackAdapter.
    • O callbackFlow foi removido para que APIs experimentais não sejam mais usadas (Ia4d15).
  • Adição de um método auxiliar para criar recursos de exibição de teste.
    • O occlusionMode se tornou occlusionType (If4cff).

Correções de bugs

  • O erro do ProGuard em que a biblioteca principal estava sendo removida foi corrigido.
  • O erro em que objetos WindowLayoutInfo não eram entregues a outros assinantes foi corrigido.
  • Um erro em que as mudanças de configuração não acionavam atualizações de recursos dobráveis foi corrigido.

Versão 1.0.0-alpha09

30 de junho de 2021

Lançamento de androidx.window:window-*:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações.

Novos recursos

  • Mudança de constantes inteiras para enumerações ilimitadas.
  • Adicionado utilitário de teste para criar recursos testes de dobráveis.

Mudanças na API

  • Adição de um método auxiliar para criar recursos de exibição de teste (I3cf54).
    • Mudança de occlusionMode para occlusionType.

Correções de bugs

  • Emitido valor inicial ao adicionar vários consumidores dos streams de dados.

Versão 1.0.0-alpha08

16 de junho de 2021

Lançamento de androidx.window:window-*:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.

Novos recursos

  • Lançamento de um artefato para facilitar o teste com o WindowInfoRepository. Use o WindowInfoRepository para receber informações sobre os DisplayFeatures e as WindowMetrics (I57f66, Ida620).

Versão 1.0.0-alpha07

2 de junho de 2021

Lançamento de androidx.window:window-*:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.

Novos recursos

  • Migração da biblioteca principal de janelas para o Kotlin. De agora em diante, ela vai usar corrotinas e suspender funções para expor dados assíncronos.
  • O WindowInfoRepo foi adicionado como o principal ponto de interação para acessar as WindowMetrics e o fluxo das WindowLayoutInfo.
  • Novo artefato window-java foi adicionado para expor APIs compatíveis com Java para registrar e cancelar o registro de callbacks.
  • Novos artefatos window-rxjava2 e window-rxjava3 para expor APIs adaptadas do RxJava.

Mudanças na API

  • Adição da WindowServices para fornecer dependências de modo uniforme.
    • Adição de API baseada em corrotina para consumir informações de layout da janela (Iab70f).
  • Migração da biblioteca principal de gerenciador de janelas para o Kotlin (Icca34).

Correções de bugs

  • Adição de uma nova classe de dados para representar limites de recursos (I6dcd1).

Versão 1.0.0-alpha06

5 de maio de 2021

Lançamento de androidx.window:window:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações.

Novos recursos

  • Iniciamos a migração para o Kotlin e terminaremos na próxima versão.
  • DeviceState foi removido da API pública. Use FoldingFeature.
  • Removemos STATE_FLIPPED dos estados de FoldingFeature, já que ele não oferece suporte a nenhum caso de uso no momento.
  • Também removemos outras APIs suspensas.

Mudanças na API

  • O Kotlin foi adicionado como uma dependência.
    • A biblioteca principal foi migrada para Kotlin (Idd995).
  • O builder DisplayFeature foi removido (I61fa4).
  • O DeviceState foi removido da API pública. Use FoldingFeature (Id6079).
  • O callback de estado do dispositivo foi removido das extensões (I5ea83).
  • STATE_FLIPPED foi removido de FoldingFeature (I9c4e1).
  • Os métodos de registro descontinuados foram removidos (Ib381b).

Versão 1.0.0-alpha05

24 de março de 2021

Lançamento de androidx.window:window:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.

Novos recursos

Adicionamos métodos de conveniência ao FoldingFeature para que os apps possam saber se o recurso está separando ou obscurecendo e determinar a orientação da articulação. Também escondemos o tipo de articulação.

Estamos removendo os métodos de leitura síncronos do WindowManager. Os métodos de leitura síncrona são propensos a erros, já que há uma disputa implícita. Registre listeners e callbacks para receber atualizações no WindowLayoutInfo.

Mudanças na API

  • Métodos de conveniência foram adicionados para trabalhar com o FoldingFeatures (Ie733f).
  • Métodos de leitura síncrona do WindowManager foram removidos (I96fd4).

Versão 1.0.0-alpha04

10 de Março de 2021

Lançamento de androidx.window:window:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.

Novos recursos

  • Correção de um bug em que nenhum WindowLayoutInfo é emitido se não há uma implementação de OEM. Agora, emitimos um WIndowLayoutInfo vazio.
  • Foi corrigido um bug em que o estado não era atualizado corretamente quando o estado da articulação mudava enquanto o app era colocado em segundo plano. Agora o estado será consistente.
  • Nossos arquivos Proguard foram atualizados para ignorar avisos de dependências do ambiente de execução.

Correções de bugs

  • Um valor vazio vai ser emitido quando a biblioteca do OEM estiver ausente (Ide935).

Versão 1.0.0-alpha03

18 de fevereiro de 2021

Lançamento de androidx.window:window:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.

Novos recursos

  • Um valor vazio vai ser emitido para WindowLayoutInfo quando a implementação do OEM estiver vazia. Isso facilitará o uso da biblioteca em mais dispositivos. Como as APIs são assíncronas, ainda é recomendável que os apps gravem um código de defesa e emitam um valor padrão após um tempo limite. Não há garantias de implementações do OEM, e o valor inicial pode apresentar atraso.

Correções de bugs

  • Um valor vazio vai ser emitido quando a biblioteca do OEM estiver ausente (Ide935).

Versão 1.0.0-alpha02

27 de janeiro de 2021

Lançamento de androidx.window:window:1.0.0-alpha02. A versão 1.0.0-alpha02 contém estas confirmações.

Novos recursos

  • Descontinuamos algumas APIs para ajudar a simplificar o uso delas e reduzir erros. Alguns exemplos relevantes são a remoção das operações de leitura síncronas do WindowManager e a descontinuação do uso do DeviceState. As operações de leitura síncronas podem levar a disputas e apresentar uma IU incorreta.

  • Convertemos o DisplayFeature em uma interface que outros recursos implementarão daqui em diante. Nosso primeiro recurso é o FoldingFeature, que agora é a representação de uma dobra de tela ou articulação. Ele também contém o estado da articulação que substitui o DeviceState.

  • O WindowMetrics foi apresentado no Android 11 para oferecer aos desenvolvedores uma forma simples de consultar métricas sobre uma janela, como a posição e o tamanho na tela e os encartes do sistema. Fizemos backport da API nesta versão para que os desenvolvedores possam aproveitar o WindowMetrics e continuar oferecendo suporte a versões anteriores do Android. O WindowMetrics pode ser conseguido pelas APIs WindowManager#getCurrentWindowMetrics() e WindowManager#getMaximedWindowMetrics().

Mudanças na API

  • O uso das APIs que serão removidas na próxima versão Alfa foi descontinuado (Ib7cc4).
  • Atualiza ExtensionInterface para aceitar referências explícitas de atividade (I07ded).
  • Introdução da API WindowMetrics (I3ccee).
  • Remoção dos métodos de leitura síncronos do WindowManager (I69983).
  • Proteção do pacote ExtensionWindowBackend (Ied208).

Correções de bugs

  • Atualização das APIs ExtensionInterface para aceitar contextos visuais (I8e827).

Contribuição externa

  • Mescla de DeviceState e WindowLayoutInfo para facilitar o acesso aos dados (Id34f4).

Versão 1.0.0-alpha01

27 de fevereiro de 2020

Lançamento de androidx.window:window:1.0.0-alpha01 e androidx.window:window-extensions:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações. Essa é a primeira versão da biblioteca do Window Manager.

Novos recursos

  • DisplayFeature: nova API que identifica interrupções nas superfícies contínuas de telas planas, como articulações ou dobras.
  • DeviceState: nova API que informa a posição atual do smartphone usando uma lista de posições definidas (por exemplo, CLOSED, OPENED, HALF_OPENED etc.).