WindowManager
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 24 de setembro de 2025 | 1.5.0 | - | - | - |
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.5.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.5.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.5.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.5.0" // For testing implementation "androidx.window:window-testing:1.5.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.5.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.5.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.5.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.5.0") // For testing implementation("androidx.window:window-testing:1.5.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.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.5
Versão 1.5.0
24 de setembro de 2025
Lançamento de androidx.window:window-*:1.5.0. A versão 1.5.0 contém estes commits.
Mudanças importantes desde a versão 1.4.0:
- Adicione pontos de interrupção
WindowSizeClasspara Grande e Extra Grande. (I40d85). - Expandir o cálculo de
WindowMetricspara o contexto do aplicativo. (I8eeeb, b/360934048). - Fornecer um getter para permitir acesso direto a
WindowLayoutInfo(Ie9513). - Introduzir uma API para salvar automaticamente o estado de incorporação e restaurar automaticamente o estado de incorporação quando o processo do app for reiniciado. (Ie0295).
- Remoção da API experimental
WindowInsets. (I68a71).
Correções de bugs
- Correção de
EmbeddingRuleque retornahashCodediferente em alguns casos. (I748cc). - Correção de um problema em que um
NullPointerExceptionpodia ocorrer devido a erros na implementação do dispositivo. - Correção de um problema em que nossas verificações de segurança
ActivityEmbeddingfalhavam porque o ProGuard removia classes não usadas.
Contribuição externa
- Adição de todas as plataformas KMP a
window-core(If3d7c).
Versão 1.5.0-rc01
27 de agosto de 2025
Lançamento de androidx.window:window-*:1.5.0-rc01. A versão 1.5.0-rc01 contém estes commits.
Correções de bugs
- Correção de um problema em que um
NullPointerExceptionpodia ocorrer devido a erros na implementação do dispositivo. - Correção de um problema em que nossas verificações de segurança
ActivityEmbeddingfalhavam porque o ProGuard removia classes não usadas.
Versão 1.5.0-beta02
13 de agosto de 2025
Lançamento de androidx.window:window-*:1.5.0-beta02. A versão 1.5.0-beta02 contém estes commits.
Novos recursos
- Pequenas correções de bugs.
Contribuição externa
- Adição de todas as plataformas KMP a
window-core(If3d7c).
Versão 1.5.0-beta01
2 de julho de 2025
Lançamento de androidx.window:window-*:1.5.0-beta01. A versão 1.5.0-beta01 contém estes commits.
Versão 1.5.0-alpha02
7 de maio de 2025
Lançamento de androidx.window:window-*:1.5.0-alpha02. A versão 1.5.0-alpha02 contém estes commits.
Mudanças na API
- Adicione pontos de interrupção
WindowSizeClasspara Grande e Extra Grande. (I40d85). - Expandir o cálculo de
WindowMetricspara o contexto do aplicativo. (I8eeeb, b/360934048). - Fornecer um getter para permitir acesso direto a
WindowLayoutInfo(Ie9513). - Introduzir uma API para salvar automaticamente o estado de incorporação e restaurar automaticamente o estado de incorporação quando o processo do app for reiniciado. (Ie0295).
- Remoção da API experimental
WindowInsets. (I68a71). - Ocultação de alguns construtores (I87b8d)
Correções de bugs
- Correção de
EmbeddingRuleque retornahashCodediferente em alguns casos. (I748cc).
Versão 1.5.0-alpha01
12 de março de 2025
Lançamento de androidx.window:window-*:1.5.0-alpha01. A versão 1.5.0-alpha01 contém estes commits.
Novos recursos
- Versão inicial da próxima 1.5.0.
Versão 1.4
Versão 1.4.0
20 de maio de 2025
Lançamento de androidx.window:window-*:1.4.0. A versão 1.4.0 contém estes commits.
Mudanças importantes desde a versão 1.3.0
- Incorporação de atividades
- API para personalizar as animações de inicialização
- Divisor interativo
ActivityStackFixar- Escurecimento da tela cheia para caixas de diálogo
- Callback de informações da janela de atividade incorporada
- Melhor gestão de
ActivityStack - Iniciar uma atividade em um
ActivityStackespecificado
WindowMetricsCalculator- Melhorar o suporte à capacidade de teste
WindowMetrics- Métodos de conveniência para calcular
withDpeheightDp - Atualizar a verificação de limites para
isAtLeaste usar limites inferiores para permitir a adição de novos valores
- Métodos de conveniência para calcular
WindowSizeClass- Adicionar forma de calcular de
WindowMetrics
- Adicionar forma de calcular de
WindowInfoTracker- Adição de API para detectar as posturas compatíveis no dispositivo
Versão 1.4.0-rc02
23 de abril de 2025
Lançamento de androidx.window:window-*:1.4.0-rc02. A versão 1.4.0-rc02 contém estes commits.
Correções de bugs
- Correção de uma falha do ProGuard para
ActivityEmbedding.
Versão 1.4.0-rc01
12 de março de 2025
Lançamento de androidx.window:window-*:1.4.0-rc01. A versão 1.4.0-rc01 contém estes commits.
Novos recursos
- Atualizações na API
WindowSizeClass. - Atualizações nas APIs Activity Embedding.
Versão 1.4.0-beta02
12 de fevereiro de 2025
Lançamento de androidx.window:window-*:1.4.0-beta02. A versão 1.4.0-beta02 contém estes commits.
Novos recursos
- Corrigir uma anotação que estava apenas na propriedade, mas não no getter.
Versão 1.4.0-beta01
15 de janeiro de 2025
Lançamento de androidx.window:window-*:1.4.0-beta01. A versão 1.4.0-beta01 contém estes commits.
Novos recursos
- Adição de API para permitir a personalização de animações
ActivityEmbedding. - Expanda as APIs de teste
WindowMetricsCalculatorpara permitir a simulação das métricas de janela.
Mudanças na API
- Ocultação de alguns construtores (I87b8d).
- Permitir que os apps personalizem animações de
ActivityEmbedding(If31a8) - Adição de suporte ao destino
watchosDeviceArm64do KMP e ao Kotlin 1.9 (Icf15d, b/364652024). - Expor APIs
WindowMetricsCalculator. (I1cebf)
Correções de bugs
- Agora, essa biblioteca usa anotações de nulidade do JSpecify, que são de uso de tipo. Os desenvolvedores Kotlin precisam usar o seguinte argumento do compilador para garantir o uso correto:
-Xjspecify-annotations=strict(esse é o padrão a partir da versão 2.1.0 do compilador Kotlin). (Ie69ac, b/326456246).
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 estes commits.
Novos recursos
- Adicione funções de conveniência para receber o
widthDpe oheightDpdeWindowMetrics.
Mudanças na API
- Adicione
widthDpeheightDpaWindowMetrics. (Ide026) - Remoção da API experimental
WindowInsets. (I68a71). - Atualização dos nomes dos métodos de verificação de limites 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 estes commits.
Mudanças na API
- Adição de um método para calcular o
WindowSizeClassdeWindowMetrics. (874dba) - Mude os métodos
WindowSizeClassparacontainsWidthDp,containsHeightDpecontainsWindowSizeDppara maior clareza. (fa760d) - Converter
WindowAreaControllerem uma classe base abstrata. (I90893)
Correções de bugs
- Adicionado suporte a limites relativos ao criar um
FoldingFeaturede 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 estes commits.
Novos recursos
- Adicione um método utilitário para receber um
WindowSizeClassdeWindowMetrics. (I83f1f). isAtLeastfoi renomeado comocontainsBreakpoint. (I85b47).- Adicione sobrecarga a
computeWindowSizeClassusando números de ponto flutuante. (I3dcb2, b/364677934, b/364677802, b/364680886).
Correções de bugs
- Adicione os pontos de interrupção ausentes ao conjunto padrão de pontos de interrupção
WindowSizeClass. - 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 estes commits.
Novos recursos
Adição de suporte para WindowSizeClass personalizado.
- Abra o construtor para
WindowSizeClasspara que os desenvolvedores possam usar o próprio. - Adicione métodos utilitários
isAtLeastpara que os desenvolvedores possam processar uma variedade de valoresWindowSizeClass. - Adicione uma função de extensão em
Set<WindowSizeClass>para calcular a melhor correspondência do conjunto. - Adicione 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 para Android.
Mudanças na API
- Atualize os nomes dos métodos de limites para
WindowSizeClass. (If89a6). - Atualize a API
WindowSizeClasspara permitir a adição de novos valores de ponto de interrupção no futuro. Em vez de ter limites absolutos, usamos os limites inferiores e recomendamos que os desenvolvedores usem verificações de limite inferior ao processar umWindowSizeClass. OsWindowWidthSizeClasseWindowHeightSizeClassatuais 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 estes commits.
Novos recursos
- Com o fixação de ActivityStack, os apps podem fixar o conteúdo em um contêiner e isolar 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, escurecendo 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 de incorporação 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 aprimorado de ActivityStack permite que os apps tenham mais controle sobre o
ActivityStacksquando oActivityEmbeddingé usado, incluindo: - Como iniciar uma atividade em um
ActivityStackespecificado - Concluir um
ActivityStack
Mudanças na API
Uma nova API
WindowInfoTracker#supportedPostures:- Uma API para determinar se o dispositivo é compatível com o modo de mesa para dobráveis. Adiciona WindowAreaSessionPresenter#getWindow.
Adicione APIs para oferecer suporte à fixação de
ActivityStack:- Classe
SplitPinRule SplitController#pinTopActivityStackSplitController#unpinTopActivityStack
- Classe
Adicionar APIs para ativar e configurar o divisor interativo
- Classe
DividerAttributes SplitAttributes.Builder#setDividerAttributes
- Classe
Adição de APIs para definir
EmbeddingConfigurationeDimAreaBehaviorem caixas de diálogo- Classe
EmbeddingConfiguration - Classe
DimAreaBehavior ActivityEmbeddingController#setEmbeddingConfiguration
- Classe
Adição de APIs para receber atualizações de informações da janela de atividade incorporada
- Classe
EmbeddedActivityWindowInfo ActivityEmbeddingController#embeddedActivityWindowInfo
- Classe
Adicionar APIs para definir o plano de fundo da animação de incorporação
EmbeddingAnimationBackgroundSplitAttributes.Builder#setAnimationBackground
Adicionar APIs para concluir
ActivityStacksActivityEmbeddingController#finishActivityStacks
Adicionar APIs para definir o lançamento de
ActivityStackActivityEmbeddingOptions#setLaunchingActivityStack
As seguintes APIs estão estáveis e não são mais experimentais:
ActivityEmbeddingController#invalidateVisibleActivityStacks(movido de SplitController#invalidateTopVisibleSplitAttributes)ActivityEmbeddingController#getActivityStackSplitController#updateSplitAttributes
Adicione APIs para 1.4. (I56774).
Correções de bugs
- Correção de um bug em determinados dispositivos em que UNAVAILABLE era retornado em vez de ACTIVE quando uma sessão estava ativa.
- Remove o suporte para
transferActivityToWindowAreaem dispositivos com umvendorApiLevelde 2 devido ao suporte instável da API. - Introdução da API para ativar o recurso de arrastar para tela cheia no divisor arrastável da incorporação de atividades. (I645c9).
- Permitir que os apps desativem animações de
ActivityEmbeddingusando parâmetros de animação paraSplitAttributes. (Idc01a). - Removemos o esboço manual do acesso a novas APIs da plataforma, já que isso acontece automaticamente pela modelagem de API ao usar o R8 com o AGP 7.3 ou mais recente (por exemplo, a versão 3.3 do R8) e para todos os builds ao usar o AGP 8.1 ou mais recente (por exemplo, a versão 8.1 do D8). Recomendamos que os clientes que não usam o AGP atualizem 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
SplitAttributespara que o dispositivo possa usá-los em 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)
- Adição de densidade a
WindowMetrics(Id6723). - Adição da API para acessar o
SupportedPostures. (If557a). - O
setLaunchingActivityStackfoi removido da API experimental (I191cf). - Apresentação de
ActivityEmbeddingController#embeddedActivityWindowInfo(I24312). - Descontinuação de
#getTokene 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).
- Introduza
WindowSdkExtensionsRulepara substituirextensionsVersionpara testes. (Ifb928). - - Migre
#setLaunchingActivityStackpara o pacote para compatibilidade com usos deActivityOptionsCompat.- Os usuários precisam transmitir
activityOptions.toBundleem vez deActvityOptions. - O
#setLaunchingActivityStack(Activity)foi removido. Os usuários precisam migrar para usarActivityEmbeddingController#getActivityStac(Activity)e receber umActivityStack, transmitindo oActivityStackpara#setLaunchingActivityStack. (Ie0ccc).
- Os usuários precisam transmitir
- - Apresente
ActivityStack.TokeneSpltInfo.Tokencomo um identificador para comunicação entre o Jetpack WM e as extensões.- Descontinuar/substituir APIs para usar/retornar Token em vez de IBinder. (I12b24).
- - Apresente
ActivityEmbeddingController#invalidateVisibleActivityStacks- Remoção de
SplitController#invalidateTopVisibleSplitAttributesporque o recurso foi consolidado em#invalidateVisibleActivityStacks(I02ef5).
- Remoção de
- - Adição de API para definir a configuração de embedding. (I59a4a).
- - Adição de APIs de fixação/remoção da fixação na parte superior
ActivityStackandroidx.Window- Atualização do app de demonstração para permitir fixar/desafixar o
ActivityStacksuperior (I24dd3)
- Atualização do app de demonstração para permitir fixar/desafixar o
- Adição de
#finishActivityStackseActivityEmbeddingOptions(Ic1ab3). - Remova 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 estes commits.
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 Jetpack 1.3 oferece suporte ao Kotlin Multiplatform para recursos do WindowSizeClass, além de várias correções de bugs.WindowManager
Lançamento de androidx.window:window-*:1.3.0-rc01. A versão 1.3.0-rc01 contém estes commits.
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 estes commits.
Mudanças na API
- Remoção da compatibilidade para criação e uso de
WindowSizeClasss personalizados. (Id1143)
Correções de bugs
- Correção de
KotlinReflectionInternalErrorcausada pela remoção de alguns arquivos pelo ProGuard 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 estes commits.
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 estes commits.
Mudanças na API
- Divida
WindowSizeClassUtilem métodos mais focados. (Ie9292). - Restaurar
WindowSizeClass#compute(I21355, b/324293374)
Correções de bugs
- Correção de uma falha em que o contexto fornecido não estava sendo desencapsulado 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 superfície da API Window Size Class 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
WindowSizeClassde um conjunto. Adicionar funções de pontuação experimentais para que os desenvolvedores possam escrever os próprios seletores. Adicione uma função de extensão de seletor para escolher oWindowSizeClassmais amplo dentro de um determinado limite. (I0c944). - Abra o construtor
WindowSizeClasspara que seja possível adicionar pontos de interrupção personalizados. (Ic1ff3). - Adicione uma função de conveniência para criar uma classe de tamanho com base em 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
- Expor APIs experimentais de janela para acessar a tela traseira.
- As APIs de teste para criar um
FoldingFeatureagora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbeddingfalsos agora estão estáveis. WindowLayoutInfoPublisherRuleagora informa a substituição ao receber um valor de umUiContext.- O recurso de recolhimento de relatórios
WindowInfoTrackerenvia dados para parâmetrosUiContext. - Exponha a versão das extensões no dispositivo.
- Constantes
WindowPropertiespara substituições por app do usuário:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE: informa ao sistema que o app desativou a substituição da compatibilidade de proporção da tela para o usuário.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE: informa ao sistema que o app desativou a opção de tela cheia nas configurações de substituição de compatibilidade de proporção da tela 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
- Expor APIs experimentais de janela para acessar a tela traseira.
- As APIs de teste para criar um
FoldingFeatureagora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbeddingfalsos agora estão estáveis. WindowLayoutInfoPublisherRuleagora informa a substituição ao receber um valor de umUiContext.- O recurso de recolhimento de relatórios
WindowInfoTrackerenvia dados para parâmetrosUiContext. - Exponha 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
- Expor APIs experimentais de janela para acessar a tela traseira.
- As APIs de teste para criar um
FoldingFeatureagora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbeddingfalsos agora estão estáveis. WindowLayoutInfoPublisherRuleagora informa a substituição ao receber um valor de umUiContext.- O recurso de recolhimento de relatórios
WindowInfoTrackerenvia dados para parâmetrosUiContext. - Exponha 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 estes commits.
Mudanças na API
- Remova APIs instáveis. (Ibc534, b/302380585)
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
- Adicione verificações de
RequiresApipara 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
- Anotar a versão necessária da extensão do SDK do Windows em APIs públicas.
- Remova
isXXXSupportedno componente de incorporação de atividades. (Ie3dae)
- Remova
- Introduza
WindowSdkExtensionspara informar a versão da extensão no dispositivo.- Introduza
RequiresWindowSdkExtensionpara anotar a versão mínima necessária da extensão. (I05fd4).
- Introduza
- Torna
WindowAreaInfo#getCapabilitynã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
- Expor APIs experimentais de janela para acessar a tela traseira.
- As APIs de teste para criar um
FoldingFeatureagora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbeddingfalsos agora estão estáveis. WindowLayoutInfoPublisherRuleagora informa a substituição ao receber um valor de umUiContext.- O recurso de recolhimento de relatórios
WindowInfoTrackerenvia dados para parâmetrosUiContext.
Mudanças na API
- Marca as APIs
WindowAreacomo experimentais para permitir que as mudanças na API continuem para um lançamento estável na versão 1.3 (I857f5). - Os arquivos de 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 obsoletas da plataforma de API.
- Adição de APIs para oferecer suporte a telas simultâneas.
- Adicione uma propriedade para desativar a substituição de redimensionamento forçado.
- Adicione a propriedade para desativar a substituição da proporção mínima.
- Estabilização de
ActivityEmbeddingRulepara oferecer suporte a testes de unidade com incorporação de atividade.
Mudanças na API
Correções de bugs
- Adição de uma propriedade de compatibilidade de desativação para substituição de redimensionamento forçado (Ie7ab1)
- Remove
SESSION_STATE_CONTENT_INVISIBLEda interface de extensões. (I6ed19) - Estabilização do
ActivityEmbeddingRulepara oferecer suporte a testes de unidade em torno da incorporação de atividades. (I8d6b6). - Adição de uma propriedade de compatibilidade de desativação para substituição da proporção mínima. (I66390)
- Remove as APIs WindowArea descontinuadas (Ieb67c).
- Renomeie a propriedade do loop de solicitação de orientação para
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd). - Atualiza os nomes de constantes de sessão da área da janela (I83675).
- Adição de uma propriedade de compatibilidade de recusa que ignora o loop de solicitação de orientação quando detectado (I0a7a2)
- Adicione
WindowAreaComponent#STATUS_ACTIVEpara indicar que o recurso já está ativo. (I62bc3). - Adição das APIs
RearDisplayPresentationMode(I0401c). - Remover a API de cor de segundo plano para estável. (I34c3e).
- Oculta APIs da área da janela. (I39de0).
- Adicione métodos para substituir o
SplitInfoemSplitController. Adição de métodos de teste para criar um valor de ponto flutuante de precisão dupla paraSplitInfoeActivityStack. (Icd69f). - Tornar a tag opcional para
ActivityRule.Builder. (Ib0b44). RatioSplitType,ExpandContainersSpliteHingeSplitTypeforam removidos. Agora eles sãoSplitType.- Substitua
#splitEqually(),#expandContainers()e#splitByHingepelas constantesSplitType SPLIT_TYPE_EQUAL,SPLIT_TYPE_EXPANDeSPLIT_TYPE_HINGE. - Remoção da funcionalidade para definir o tipo de substituição do tipo de divisão da dobradiça. Se o tipo de divisão da dobradiça não puder ser aplicado devido ao estado atual do dispositivo ou da janela, ele vai dividir o contêiner de tarefas principal igualmente. Use
SplitController#setSplitAttributesCalculatorpara personalizar o tipo de divisão de fallback. (Ifcc59).
- Substitua
- Descontinuar
add/removeSplitCallback- Mover
add/removeSplitCallbackparaSplitControllerCallbackAdapter - Adição de suporte a
Flowpara receber a listaSplitInfo(I7f1b6).
- Mover
- Adicionar uma regra de teste para
ActivityEmbeddingController(I42e9b) ActivityOptionsCompatfoi renomeado comoActivityEmbeddingOptions(I89301).- Adição de
splitSupportStatuspara indicar se a incorporação de atividades está disponível (I10024). - Introduza
SplitAttributes.BackgroundColorpara representar melhor o valorDEFAULT. Esclarecemos que a cor de plano de fundo da 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()ealwaysDisallow()porALWAYS_ALLOWeALWAYS_DISALLOW. (I3057b). - Adição de APIs para
SplitRule,SplitAttributes,SplitAttributesCalculator(I92d23). - Adicione
TestActivityStackpara criarActivityStackpara teste- Adicione
TestSplitInfopara criarSplitInfopara teste. (I8e779).
- Adicione
- Adicione uma maneira de criar
SplitAttributesCalculatorParamsfalsos para que os desenvolvedores possam verificar oSplitAttributesCalculatorpersonalizado (Id4a6e). - Adição de
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)eWindowMetricsCalculator#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
- Atualize a API de teste para ter uma constante para recursos de dobragem não especificados.
- A substituição com
WindowLayoutInfoPublishRulevai substituir todos os valores dewindowLayoutInfo, incluindo a API baseada em contexto.
Mudanças na API
- Adicione uma constante para o recurso de dobra central não especificado. (I7530c).
Correções de bugs
- Atualize
WindowLayoutInfoPublishRulepara oferecer suporte a substituições emWindowLayoutInfocom base emContext. (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 das APIs de teste em torno da incorporação de atividade e do WindowLayoutInfoTracker. O ActivityEmbeddingRule foi promovido a estável.
O WindowMetricsCalculatorRule foi promovido a estável.
As funções utilitárias para criar um FoldingFeature para teste foram promovidas para estável.
Mudanças na API
- Estabilização do
ActivityEmbeddingRulepara oferecer suporte a testes de unidade em torno da incorporação de atividades. (I8d6b6). WindowMetrisCalculatorTestRuleé estável, permitindo métricas de stub para testes de JVM. Recomendamos usar um emulador para ter resultados precisos.- Estabilizar APIs de teste para
WindowLayoutInfoe oferecer suporte a testes de JVM. (Ie036e). - Adicione
IntRangepara valores de recursos de teste de dobráveis. (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_ENABLEDcomo uma propriedade booleana da tag<application>no manifesto do app. - O
isSplitSupportedfoi descontinuado e substituído porsplitSupportStatuspara fornecer informações mais detalhadas sobre por que o recurso de divisão não está disponível. - Adição da classe aninhada
SplitController.SplitSupportStatuspara fornecer constantes de estado à propriedadesplitSupportStatus. - Refatoração de
SplitControllerem vários módulos:- Módulo
ActivityEmbeddingControllerpara APIs relacionadas aActivityouActivityStack. isActivityEmbeddedfoi movido deSplitControllerparaActivityEmbeddingController.- Módulo
RuleControllerpara operações relacionadas aEmbeddingRule: - APIs
SplitControllerremovidas: clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()- As APIs
RuleControllerforam adicionadas: addRule(): adiciona ou atualiza a regra com a mesma tag.removeRule(): remove uma regra da coleção de regras registradas.setRules(): estabelece uma coleção de regras.clearRules(): remove todas as regras registradas.parseRules(): analisa regras de definições de regras XML.
- Módulo
- Todos os módulos precisam de um contexto para serem inicializados pelo método
#getInstance(), incluindo:ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
- Adição da classe
EmbeddingAspectRatiopara definir constantes de comportamento semelhantes a enumeração relacionadas à proporção da tela. - A classe
SplitAttributesfoi adicionada para definir o layout dividido. - Adicionamos funções de calculadora
SplitAttributesaSplitControllerpara personalizar layouts divididos:setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()para verificar se as APIsSplitAttributesCalculatorsão compatíveis com o dispositivo
- Adicionamos o campo
EmbeddingRule#tag. - Atualizações da API em
SplitRule:- Adicionado
defaultSplitAttributes: define o layout de divisão padrão de uma divisão e substituisplitRatioelayoutDirection. - Adicionamos a tradução das propriedades XML
splitRatioesplitLayoutDirectionparadefaultSplitAttributes. - Mudamos as definições de dimensão mínima para usar pixels de densidade independente (dp) em vez de pixels.
- Adicionada
minHeightDpcom o valor padrão de 600 dp. - Mudamos
minWidthparaminWidthDpcom o valor padrão de 600 dp. - Mudamos
minSmallestWidthparaminSmallestWidthDpcom o valor padrão de 600 dp. - Adicionada
maxAspectRatioInHorizontalcom o valor padrãoALWAYS_ALLOW. - Adicionada
maxAspectRatioInPortraitcom valor padrão 1.4. - Definida a classe aninhada
FinishBehaviorpara substituir as constantes de comportamento de conclusão. - Aplicou as mudanças de propriedade à classe aninhada Builder de
SplitPairRuleeSplitPlaceholderRule.
- Adicionado
- Substituímos
SplitInfo#getSplitRatio()porSplitInfo#getSplitAttributes()para fornecer mais informações relacionadas à divisão.
WindowLayout
- Adição de suporte experimental ao contexto de interface não relacionada a atividades em
WindowInfoTracker. - Adicionado contexto experimental de interface sem atividade ao
WindowMetricsCalculator.
Etapas da migração
- Para ativar a incorporação de atividades e mostrar 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. SplitInfoproporção- Verifique se a divisão atual está empilhada:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - Verifique 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. }
- Verifique se a divisão atual está empilhada:
- Migrações do SplitController:
SplitController.getInstance()muda paraSplitController.getInstance(Context).SplitController.initialize(Context, @ResId int)muda paraRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).SplitController.getInstance().isActivityEmbedded(Activity)muda paraActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).SplitController.getInstance().registerRule(rule)muda paraRuleController.getInstance(Context).addRule(rule).SplitController.getInstance().unregisterRule(rule)muda paraRuleController.getInstance(Context).removeRule(rule).SplitController.getInstance().clearRegisteredRules()muda paraRuleController.getInstance(Context).clearRules().SplitController.getInstance().getSplitRules()muda paraRuleController.getInstance(Context).getRules().
- Migrações de propriedade
SplitRule:minWidtheminSmallestWidthagora usam unidades dp em vez de pixels. Os apps podem usar a seguinte chamada:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )ou simplesmente dividirminWithem pixels pordisplayMetrics#density.
- As constantes de comportamento de conclusão precisam ser migradas para constantes de classe semelhantes a enum
FinishBehavior:FINISH_NEVERmuda paraFinishBehavior.NEVER.FINISH_ALWAYSmuda paraFinishBehavior.ALWAYS.FINISH_ADJACENTmuda paraFinishBehavior.ADJACENT.
- A direção do layout precisa ser migrada para
SplitAttributes.LayoutDirection:ltrmuda paraSplitAttributes.LayoutDirection.LEFT_TO_RIGHT.rtlmuda paraSplitAttributes.LayoutDirection.RIGHT_TO_LEFT.localemuda paraSplitAttributes.LayoutDirection.LOCALE.splitRatioprecisa ser migrado paraSplitAttributes.SplitType.ratio(splitRatio).
SplitPairRule.Buildermigrations:- Mudança de
SplitPairRule.Builder(filters, minWidth, minSmallestWidth)parakotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600. setLayoutDirection(layoutDirection)esetSplitRatio(ratio)mudam parakotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondaryesetFinishSecondaryWithPrimaryusam as constantes semelhantes a enumeraçãoFinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.- Use
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)para mostrar divisões em dispositivos no modo retrato.
- Mudança de
SplitPlaceholder.Buildermigrations:- Tem apenas parâmetros
filterseplaceholderIntent. Outras propriedades são movidas para setters. Consulte "Migrações de SplitPairRule.Builder" para mais detalhes. setFinishPrimaryWithPlaceholderusa as constantes semelhantes a enumFinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.setLayoutDirection(layoutDirection)esetSplitRatio(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 no modo retrato.
- Tem apenas parâmetros
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
- Lançamento da
ActivityEmbeddingcomo 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 e limpeza internas.
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_ENABLEDcomo uma propriedade booleana da tag<application>no manifesto do app. - O
isSplitSupportedfoi descontinuado e substituído porsplitSupportStatuspara fornecer informações mais detalhadas sobre por que o recurso de divisão não está disponível. - Adição da classe aninhada
SplitController.SplitSupportStatuspara fornecer constantes de estado à propriedadesplitSupportStatus. - Refatoração de
SplitControllerem vários módulos:- Módulo
ActivityEmbeddingControllerpara APIs relacionadas aActivityouActivityStack. isActivityEmbeddedfoi movido deSplitControllerparaActivityEmbeddingController.- Módulo
RuleControllerpara operações relacionadas aEmbeddingRule: - APIs
SplitControllerremovidas:clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()
- Adição das APIs
RuleController:addRule(): adiciona ou atualiza a regra com a mesma tag.removeRule(): remove uma regra da coleção de regras registradas.setRules(): estabelece uma coleção de regras.clearRules(): remove todas as regras registradas.- `parseRules()`: analisa regras de definições de regras XML.
- Módulo
- Todos os módulos precisam de um contexto para serem inicializados pelo método
#getInstance(), incluindo:ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
- Adição da classe
EmbeddingAspectRatiopara definir constantes de comportamento semelhantes a enumeração relacionadas à proporção da tela. - A classe
SplitAttributesfoi adicionada para definir o layout dividido. - Adicionamos funções de calculadora
SplitAttributesaSplitControllerpara personalizar layouts divididos:setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()para verificar se as APIs SplitAttributesCalculator são compatíveis com o dispositivo
- Adicionamos o campo
EmbeddingRule#tag. - Atualizações da API em
SplitRule:- Adicionado
defaultSplitAttributes: define o layout de divisão padrão de uma divisão e substituisplitRatioelayoutDirection. - Adicionamos a tradução das propriedades XML
splitRatioesplitLayoutDirectionparadefaultSplitAttributes. - Mudamos as definições de dimensão mínima para usar pixels de densidade independente (dp) em vez de pixels.
- Adicionada
minHeightDpcom o valor padrão de 600 dp. - Mudamos
minWidthparaminWidthDpcom o valor padrão de 600 dp. - Mudamos
minSmallestWidthparaminSmallestWidthDpcom o valor padrão de 600 dp. - Adicionada
maxAspectRatioInHorizontalcom o valor padrãoALWAYS_ALLOW. - Adicionada
maxAspectRatioInPortraitcom o valor padrão1.4. - Definida a classe aninhada
FinishBehaviorpara substituir as constantes de comportamento de conclusão. - Aplicou as mudanças de propriedade à classe aninhada
BuilderdeSplitPairRuleeSplitPlaceholderRule.
- Adicionado
- Substituímos
SplitInfo#getSplitRatio()porSplitInfo#getSplitAttributes()para fornecer mais informações relacionadas à divisão.
WindowLayout
- Adição de suporte a contextos de interface não relacionados a atividades em
WindowInfoTracker. - Adicionado contexto de interface não relacionada a atividades ao
WindowMetricsCalculator.
Etapas da migração
- Para ativar a incorporação de atividades e mostrar 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. SplitInfoproporção- Verifique se a divisão atual está empilhada:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - Verifique 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. }
- Verifique se a divisão atual está empilhada:
SplitControllermigrations:SplitController.getInstance()muda paraSplitController.getInstance(Context).SplitController.initialize(Context, @ResId int)muda paraRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).SplitController.getInstance().isActivityEmbedded(Activity)muda paraActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).SplitController.getInstance().registerRule(rule)muda paraRuleController.getInstance(Context).addRule(rule).SplitController.getInstance().unregisterRule(rule)muda paraRuleController.getInstance(Context).removeRule(rule).SplitController.getInstance().clearRegisteredRules()muda paraRuleController.getInstance(Context).clearRules().SplitController.getInstance().getSplitRules()muda paraRuleController.getInstance(Context).getRules().
- Migrações de propriedade
SplitRule:minWidtheminSmallestWidthagora usam unidades dp em vez de pixels. Os apps podem usar a seguinte chamada:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )ou simplesmente dividirminWithem pixels pordisplayMetrics#density.
- As constantes de comportamento de conclusão precisam ser migradas para constantes de classe semelhantes a enum
FinishBehavior:FINISH_NEVERmuda paraFinishBehavior.NEVER.FINISH_ALWAYSmuda paraFinishBehavior.ALWAYS.FINISH_ADJACENTmuda paraFinishBehavior.ADJACENT.
- A direção do layout precisa ser migrada para
SplitAttributes.LayoutDirection:ltrmuda paraSplitAttributes.LayoutDirection.LEFT_TO_RIGHT.rtlmuda paraSplitAttributes.LayoutDirection.RIGHT_TO_LEFT.localemuda paraSplitAttributes.LayoutDirection.LOCALE.splitRatioprecisa ser migrado paraSplitAttributes.SplitType.ratio(splitRatio).
SplitPairRule.Buildermigrations:- Mudança de
SplitPairRule.Builder(filters, minWidth, minSmallestWidth)parakotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600. setLayoutDirection(layoutDirection)esetSplitRatio(ratio)mudam parakotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondaryesetFinishSecondaryWithPrimaryusam as constantes semelhantes a enumFinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.- Use
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)para mostrar divisões em dispositivos no modo retrato.
- Mudança de
SplitPlaceholder.Buildermigrations:- Tem apenas parâmetros
filterseplaceholderIntent. Outras propriedades são movidas para setters. Consulte "Migrações de SplitPairRule.Builder" para mais detalhes. setFinishPrimaryWithPlaceholderusa as constantes semelhantes a enumFinishBehavior. Consulte "Migrações de SplitRule" para mais detalhes.setLayoutDirection(layoutDirection)esetSplitRatio(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 no modo retrato.
- Tem apenas parâmetros
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
WindowLayoutInfode um contexto de interface.
Mudanças na API
- Adição de
splitSupportStatuspara indicar se a incorporação de atividades está disponível (I10024). - A API
WindowLayoutInfode contexto de interface agora é experimental (I58ee0). - Apresenta
WindowAreaControllere APIs para permitir que o modoRearDisplaymova 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:- Substituição de
alwaysAllow()ealwaysDisallow()porALWAYS_ALLOWeALWAYS_DISALLOW. - Atualização da documentação da API de @see com documentação independente (I3057b).
- Substituição de
- Os seguintes construtores são removidos das APIs públicas porque não podem ser chamados pelos apps.
- Construtor
SplitInfo - Construtor
ActivityStack(Ide534)
- Construtor
- A
SplitRuleagora usamaxAspectRatioInPortrait/Landscape. Ela só permite atividades divididas quando a proporção dos limites pai é menor ou igual aomaxAspectRatiosolicitado (Ia5990). - Mudança de
RuleController#parseRulespara estáticas (I785df). - Melhoria nas APIs com o ActivityEmbedding
- Alinhe a nomenclatura da API: use adicionar/remover para várias instâncias:
- Mudança de
registerRuleparaaddRule. - Mudança de
unregisterRulepararemoveRule. - Substituição de
getSplitRulesporgetRules, já queActivityRulenão é uma regra de divisão. - Adição de
RuleController#setRulespara definir várias regras. - Extração de APIs relacionadas a regras de
SplitControllerpara oRuleControllerSingleton. São elas: addRuleremoveRulegetRulessetRulesclearRulesparseRules- Extração de
#isActivityEmbeddeddeSplitControllerpara oActivityEmbeddingControllerSingleton. São elas: isActivityEmbedded- A
SplitController#initializefoi removida. Para definir regras com base no arquivo XML, useRuleController#parseRulese#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) - Não distinguimos mais regras estáticas de regras de ambiente de execução. Sendo assim, chamar
#clearRulesfaz 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 deSplitController#clearRegisteredRules, chameRuleController#parseRulescom o ID de recursos XML e chameRuleController#setRulespara 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:
- Uso de dimensões mínimas no DP, em vez de pixels, para
SplitRule. - Refatoração para que o builder
SplitRuleuse as dimensões mínimas como opcionais (I95f17).
- Uso de dimensões mínimas no DP, em vez de pixels, para
- Transmissão de um contexto para inicializar o
SplitController(I42549). SplitRule#layoutDirfoi renomeado como#layoutDirection, eSplitRule Builder#setLayoutDirfoi renomeado comoBuilder#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
ActivityStackestá vazia paraActivityEmbedding. - As tags experimentais da API foram removidas das APIs
ActivityEmbedding. - O construtor
ActivityRulefoi ocultado, já que oBuilderé a maneira mais recomendada de construir. - Um método experimental foi adicionado para receber
WindowInsetsnasWindowMetrics. - O
SplitPlaceholderFinishBehaviorfoi atualizado para evitar a finalização do marcador. A conclusão do marcador causava um comportamento confuso.
Mudanças na API
- O valor
isEmptyfoi tornado público para substituir oisEmptydivertido. - As atividades do parâmetro
ActivityStackforam renomeadas comoactivitiesInProcess(Ia5055). ActivityFilter#matchesClassNameeActivityFilter#matchesClassNameOrWildCardforam removidos por serem confusos.- O
ActivityFilter#componentNameabdActivityFilter#intentActionfoi adicionado para permitir que o autor da chamada diferencie filtros diferentes (I41f22). - As APIs
@Deprecatedforam removidas da API experimental (I216b3). - O
@ExperimentalWindowApifoi removido das APIs Activity Embedding (I69ebe). - O construtor de
ActivityRulefoi 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
WindowMetricseWindowMetricsCalculatorCompat(I667fe). - O Javadoc e o nome da classe da propriedade
ActivityEmbeddingforam atualizados (Ia1386). - Nomes de tags da propriedade
ActivityEmbeddingforam adicionados para serem usados em AndroidManifest.xml (Id1ad4). - As novas APIs
SplitPlaceholderFinishBehavioreSplitPlaceholderRule.finishPrimaryWithPlaceholderforam adicionadas para substituirSplitPlaceholderRule.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
WindowAreaControllere APIs para permitir que o modoRearDisplaymova 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
WindowInfoTrackereFoldingFeature.WindowMetricsCalculatorpara 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
WindowMetricsatuais 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
- O vazamento de memória foi corrigido (I3fc79, b/202989046).
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
FoldingFeaturepassou 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 Coreforam atualizadas para a versão1.4.0e 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
occlusionModeparaocclusionType.
- Mudança de
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-javafoi adicionado para expor APIs compatíveis com Java para registrar e cancelar o registro de callbacks. - Novos artefatos
window-rxjava2ewindow-rxjava3para expor APIs adaptadas do RxJava.
Mudanças na API
- Adição da
WindowServicespara 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_FLIPPEDdos 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
DisplayFeaturefoi removido (I61fa4). - O
DeviceStatefoi removido da API pública. UseFoldingFeature(Id6079). - O callback de estado do dispositivo foi removido das extensões (I5ea83).
STATE_FLIPPEDfoi 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
ExtensionInterfacepara 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
ExtensionInterfacepara 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_OPENEDetc.).