WindowManager
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
4 de setembro de 2024 | 1.3.0 | - | - | 1.4.0-alpha02 |
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.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.4
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 ao WindowSizeClass
personalizado.
- Abra o construtor para
WindowSizeClass
para que os desenvolvedores possam usar o próprio construtor. - Adicione métodos utilitários de
isAtLeast
para que os desenvolvedores possam processar um intervalo de valores deWindowSizeClass
. - 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 pelo Android.
- Adicione o conjunto de pontos de interrupção correspondente aos pontos de interrupção recomendados pelo Android.
Mudanças na API
- Atualização dos nomes de métodos de limites para
WindowSizeClass
. (If89a6). - Atualize a 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 inferiores e recomendamos que os desenvolvedores usem verificações de limite inferior ao processar umWindowSizeClass
. O uso deWindowWidthSizeClass
eWindowHeightSizeClass
será descontinuado, já que não será mais desenvolvido. (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
- Com a fixação do 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 exibam um divisor fixo ou arrastável entre as duas atividades em uma apresentação dividida.
- O recurso Escurecimento da caixa de diálogo em tela cheia permite que os apps especifiquem a área esmaecida da caixa de diálogo para escurecer toda a janela de tarefas ou apenas escurecer 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 continuamente da janela de atividade incorporada.
- A opção Embedding de segundo plano de animação permite que os apps especifiquem o plano de fundo da animação, melhorando a qualidade da animação de transição quando
ActivityEmbedding
é usada. - O gerenciamento aprimorado do ActivityStack permite que os apps tenham mais controle sobre o
ActivityStacks
quando oActivityEmbedding
é usado, incluindo: - Como iniciar uma atividade em um
ActivityStack
especificado - Concluir uma
ActivityStack
Mudanças na API
Uma nova API
WindowInfoTracker#supportedPostures
:- Uma API para determinar se o dispositivo oferece suporte ao modo TableTop para dobráveis. Adição de WindowAreaSessionPresenter#getWindow
Adicione APIs para oferecer suporte à fixação de
ActivityStack
:- Classe
SplitPinRule
SplitController#pinTopActivityStack
SplitController#unpinTopActivityStack
- Classe
Adicione APIs para ativar e configurar o divisor interativo
- Classe
DividerAttributes
SplitAttributes.Builder#setDividerAttributes
- Classe
Foram adicionadas APIs para definir
EmbeddingConfiguration
eDimAreaBehavior
para caixas de diálogo.- Classe
EmbeddingConfiguration
- Classe
DimAreaBehavior
ActivityEmbeddingController#setEmbeddingConfiguration
- Classe
Adicione 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
EmbeddingAnimationBackground
SplitAttributes.Builder#setAnimationBackground
Adicione APIs para concluir
ActivityStacks
ActivityEmbeddingController#finishActivityStacks
Adicione 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
Adição de APIs para a versão 1.4. (I56774).
Correções de bugs
- Corrige o bug em determinados dispositivos em que UNAVAILABLE seria retornado em vez de ACTIVE quando uma sessão está ativa.
- Remoção do suporte a
transferActivityToWindowArea
em dispositivos comvendorApiLevel
de 2 devido à instabilidade do suporte à API. - A API foi introduzida para permitir o uso do recurso de arrastar para tela cheia no divisor arrastável de incorporação de atividades. (I645c9).
- Permitir que os apps desativem animações
ActivityEmbedding
usando parâmetros de animação para oSplitAttributes
. (Idc01a). - Remoção da descrição manual do acesso às 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, 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 usam o AGP são aconselhados a atualizar para o D8 versão 8.1 ou mais recente. Veja mais detalhes neste artigo. (Ia60e0, b/345472586).
- Permite que as extensões usem parâmetros de animação para a
SplitAttributes
, de modo que o dispositivo possa usá-la em transições de animação. (Iede00). - Ocultar APIs de sobreposição (Ic4251).
- As APIs foram introduzidas para configurar o divisor fixo ou arrastável para a divisão (Ia7a78).
- Densidade adicionada a
WindowMetrics
(Id6723). - Adicione a API para receber o
SupportedPostures
. (If557a). setLaunchingActivityStack
foi removido da API experimental (I191cf).- O
ActivityEmbeddingController#embeddedActivityWindowInfo
foi introduzido (I24312). - Descontinuação do uso de
#getToken
e adição de#getActivityStackToken
(Ie0471). - O adaptador de callback foi introduzido para a API de fluxo
embeddedActivityWindowInfo
(Ida77f). - Foi adicionado um adaptador de callback para a API overlayInfo de fluxo (I7264f).
- Introdução de
WindowSdkExtensionsRule
para substituirextensionsVersion
para testes. (Ifb928). - - Migração de
#setLaunchingActivityStack
para pacote para compatibilidade com os usos deActivityOptionsCompat
.- Os usuários precisam transmitir
activityOptions.toBundle
em vez do próprioActvityOptions
. - O
#setLaunchingActivityStack(Activity)
foi removido. Os usuários precisam migrar para usar oActivityEmbeddingController#getActivityStac(Activity)
para receber umActivityStack
e transmitir oActivityStack
para o#setLaunchingActivityStack
. (Ie0fc).
- Os usuários precisam transmitir
- - Introduzimos
ActivityStack.Token
eSpltInfo.Token
como identificadores para a comunicação entre o WM Jetpack e as extensões.- Suspensão/substituição das APIs para receber/retornar o token em vez do IBinder. (I12b24).
- - Apresente
ActivityEmbeddingController#invalidateVisibleActivityStacks
- Remoção de
SplitController#invalidateTopVisibleSplitAttributes
porque o recurso é consolidado para o#invalidateVisibleActivityStacks
(I02ef5).
- Remoção de
- - Adição da API para definir a configuração de incorporação. (I59a4a).
- - Como fixar/liberar as principais
ActivityStack
APIs deandroidx.Window
- Atualização do app de demonstração para permitir fixar/liberar a
ActivityStack
principal (I24dd3).
- Atualização do app de demonstração para permitir fixar/liberar a
- Adicione novamente
#finishActivityStacks
eActivityEmbeddingOptions
(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 a multiplataforma do Kotlin para classes de tamanho de janela.
Versão 1.3.0-rc01
14 de maio de 2024
WindowManager
O Jetpack 1.3 oferece suporte ao Kotlin Multiplatform para recursos WindowSizeClass
, bem como 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
1o 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 à criação e ao uso de
WindowSizeClass
s personalizadas. (Id1143).
Correções de bugs
- Corrige a
KotlinReflectionInternalError
causada pelo Proguard removendo 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
- Divisão de
WindowSizeClassUtil
em métodos mais focados. (Ie9292). WindowSizeClass#compute
foi restaurado (I21355, b/324293374).
Correções de bugs
- Correção da 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 da API Window Tamanho 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. Adicionar funções de pontuação experimentais para que os desenvolvedores possam criar os próprios seletores Adicione uma função de extensão de seletor para escolher aWindowSizeClass
mais larga dentro de um determinado 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 usando a largura, a altura e a densidade. (If67f4).
Correções de bugs
- Correção da exceção quando o valor 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
- APIs de janela experimental para acesso à tela traseira foram expostas
- As APIs de teste para criar um
FoldingFeature
agora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbedding
falsos agora estão estáveis WindowLayoutInfoPublisherRule
agora informa a substituição ao receber um valor de umUiContext
.- O
WindowInfoTracker
informa os dados do recurso de dobramento nos parâmetrosUiContext
. - Expor a versão das extensões no dispositivo.
- Constantes
WindowProperties
para substituições de usuário por app:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
: informa o sistema, o app desativou a compatibilidade de proporção voltada ao usuário substituir.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
— Informar o sistema em que o aplicativo desativou a opção de tela cheia do usuário configurações de substituição de compatibilidade de proporção
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
- APIs de janela experimental para acesso à tela traseira foram expostas
- As APIs de teste para criar um
FoldingFeature
agora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbedding
falsos agora estão estáveis WindowLayoutInfoPublisherRule
agora informa a substituição ao receber um valor de umUiContext
.- O
WindowInfoTracker
informa os dados do recurso de dobramento nos parâmetrosUiContext
. - Expor 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
- APIs de janela experimental para acesso à tela traseira foram expostas
- As APIs de teste para criar um
FoldingFeature
agora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbedding
falsos agora estão estáveis WindowLayoutInfoPublisherRule
agora informa a substituição ao receber um valor de umUiContext
.- O
WindowInfoTracker
informa os dados do recurso de dobramento nos parâmetrosUiContext
. - Expor 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
- Remover 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
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
- Anotar a versão obrigatória da extensão do SDK de janela em APIs públicas.
- Remova o
isXXXSupported
do componente de incorporação de atividades. (Ie3dae).
- Remova o
- Introduza
WindowSdkExtensions
para informar a versão da extensão no dispositivo.- Introduz o
RequiresWindowSdkExtension
para anotar a versão mínima da extensão necessária. (I05fd4).
- Introduz o
- 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
- APIs de janela experimental para acesso à tela traseira foram expostas
- As APIs de teste para criar um
FoldingFeature
agora estão estáveis. - As APIs de teste para configurar valores
ActivityEmbedding
falsos agora estão estáveis WindowLayoutInfoPublisherRule
agora informa a substituição ao receber um valor de umUiContext
.- O
WindowInfoTracker
informa os dados do recurso de dobramento nos parâmetrosUiContext
.
Mudanças na API
- As APIs
WindowArea
foram marcadas como experimentais para permitir que as mudanças de API continuem em uma versão estável na versão 1.3 (I857f5). - Atualização dos arquivos de API 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 superfície da API.
- Adicione APIs para oferecer suporte a telas simultâneas.
- Adicione uma propriedade para desativar a substituição de redimensionamento forçado.
- Adicione uma propriedade para desativar a substituição de proporção mínima.
- Estabilizar o
ActivityEmbeddingRule
para oferecer suporte a testes de unidade em incorporação de atividades.
Mudanças na API
Correções de bugs
- Foi adicionada uma propriedade de compatibilidade de desativação para forçar a substituição de redimensionamento (Ie7ab1).
- Remove a
SESSION_STATE_CONTENT_INVISIBLE
da interface de extensões. (I6ed19). - Estabilização do
ActivityEmbeddingRule
para oferecer suporte a testes de unidade na incorporação de atividades. (I8d6b6). - Adição de propriedade de compatibilidade de desativação para substituição de proporção mínima. (I66390).
- As APIs WindowArea descontinuadas foram removidas (Ieb67c).
- A propriedade de loop da solicitação de orientação foi renomeada como
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
. (Ie2fbd). - Atualiza os nomes das constantes de sessão da área da janela (I83675).
- Foi adicionada 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). - As APIs
RearDisplayPresentationMode
foram adicionadas (I0401c). - Remoção da API de cor de fundo para estabilidade (I34c3e).
- Ocultar APIs de área de janela. (I39de0).
- Adicione métodos para substituir o
SplitInfo
noSplitController
. Adição de métodos de teste a fim de criar um objeto duplo paraSplitInfo
eActivityStack
. (Icd69f). - A tag se torna opcional para
ActivityRule.Builder
. (Ib0b44). RatioSplitType
,ExpandContainersSplit
eHingeSplitType
foram removidos. Agora eles estãoSplitType
.- Substitua
#splitEqually()
,#expandContainers()
e#splitByHinge
pelas constantesSplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
eSPLIT_TYPE_HINGE
. - A funcionalidade para definir o tipo de substituição do tipo de divisão da articulação foi removida. Se o tipo de divisão da articulação não puder ser aplicado devido ao estado atual do dispositivo ou da janela, ele tentará dividir o contêiner de tarefas pai igualmente. Use
SplitController#setSplitAttributesCalculator
para personalizar o tipo de divisão do substituto. (Ifcc59).
- Substitua
- Descontinuar
add
/removeSplitCallback
- Mover
add
/removeSplitCallback
paraSplitControllerCallbackAdapter
- Foi adicionado suporte a
Flow
para acessar a listaSplitInfo
(I7f1b6).
- Mover
- Foi adicionada uma regra de teste para
ActivityEmbeddingController
(I42e9b). ActivityOptionsCompat
foi renomeado comoActivityEmbeddingOptions
(I89301).- Adição de
splitSupportStatus
para indicar se a incorporação de atividades está disponível (I10024). - Introdução de
SplitAttributes.BackgroundColor
para representar melhor o valor deDEFAULT
. Esclarecemos que não há suporte para uma cor de plano de fundo de animação não opaca. Portanto, qualquer cor não opaca vai ser tratada 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_ALLOW
eALWAYS_DISALLOW
. (I3057b). - Adição de APIs para
SplitRule
,SplitAttributes
,SplitAttributesCalculator
(I92d23). - Adicione
TestActivityStack
para criarActivityStack
para teste- Adicione
TestSplitInfo
para criarSplitInfo
para testes. (I8e779).
- Adicione
- Foi adicionada uma maneira de criar um
SplitAttributesCalculatorParams
falso para que os desenvolvedores possam verificar aSplitAttributesCalculator
personalizada (Id4a6e). WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
eWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)
foram adicionados (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 com uma constante para recursos de dobra não especificados.
- Substituir por
WindowLayoutInfoPublishRule
vai substituir todos os valores dewindowLayoutInfo
, incluindo a API com base no contexto.
Mudanças na API
- Foi adicionada uma constante para o recurso de dobra central não especificada. (I7530c).
Correções de bugs
- Atualize o
WindowLayoutInfoPublishRule
para oferecer suporte às substituições emWindowLayoutInfo
com 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
Estabilizar APIs de teste com base na incorporação de atividades e no WindowLayoutInfoTracker
. O ActivityEmbeddingRule
foi promovido para a versão estável.
O WindowMetricsCalculatorRule
foi promovido para a versão estável.
As funções utilitárias para criar um FoldingFeature
para teste foram promovidas para a versão estável.
Mudanças na API
- Estabilização do
ActivityEmbeddingRule
para oferecer suporte a testes de unidade na incorporação de atividades. (I8d6b6). - O
WindowMetrisCalculatorTestRule
é estável, permitindo métricas de stub para testes da JVM. Recomendamos usar um emulador para ter resultados precisos. - Estabilizar APIs de teste para
WindowLayoutInfo
para oferecer suporte a testes da JVM. (Ie036e). - Adição de
IntRange
para valores de recurso de dobragem de teste (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
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
foi adicionado como uma propriedade booleana da tag<application>
no manifesto do app.- O uso de
isSplitSupported
foi descontinuado e substituído porsplitSupportStatus
para fornecer informações mais detalhadas sobre o motivo da indisponibilidade do recurso dividido. - A classe aninhada
SplitController.SplitSupportStatus
foi adicionada para fornecer constantes de estado para a propriedadesplitSupportStatus
. - O
SplitController
foi refatorado para vários módulos:- Módulo
ActivityEmbeddingController
para APIs relacionadas aActivity
ouActivityStack
. isActivityEmbedded
movido deSplitController
paraActivityEmbeddingController
.- Módulo
RuleController
para operações relacionadas aEmbeddingRule
: - APIs
SplitController
removidas: clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- APIs
RuleController
adicionadas: addRule()
: adiciona uma regra ou atualiza a regra que tem 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 exigem um contexto para ser inicializado pelo método
#getInstance()
, incluindo:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- A classe
EmbeddingAspectRatio
foi adicionada para definir constantes de comportamento de tipo enumeração relacionadas à proporção de exibição. - A classe
SplitAttributes
foi adicionada para definir o layout dividido. - Foram adicionadas funções de calculadora
SplitAttributes
aSplitController
para personalizar layouts divididos:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
para verificar se as APIsSplitAttributesCalculator
têm suporte no dispositivo.
- O campo
EmbeddingRule#tag
foi adicionado. - Atualizações da API em
SplitRule
:- Adicionado
defaultSplitAttributes
: define o layout de divisão padrão de uma divisão. substituisplitRatio
elayoutDirection
. - Foi adicionada a tradução das propriedades XML
splitRatio
esplitLayoutDirection
paradefaultSplitAttributes
. - Mudamos as definições de dimensão mínima para usar pixels de densidade independente (dp, na sigla em inglês) em vez de pixels.
minHeightDp
foi adicionado com valor padrão de 600 dp.- Mudança de
minWidth
paraminWidthDp
, com o valor padrão de 600 dp. - Mudança de
minSmallestWidth
paraminSmallestWidthDp
, com o valor padrão de 600 dp. maxAspectRatioInHorizontal
com valor padrãoALWAYS_ALLOW
foi adicionado.- Adição de
maxAspectRatioInPortrait
com 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 do Builder de
SplitPairRule
eSplitPlaceholderRule
.
- Adicionado
- Substituímos
SplitInfo#getSplitRatio()
porSplitInfo#getSplitAttributes()
para fornecer mais informações relacionadas à divisão.
WindowLayout (link em inglês)
- Foi adicionado suporte experimental ao contexto da interface sem atividade para
WindowInfoTracker
. - Adicionamos um contexto experimental de interface de não atividade a
WindowMetricsCalculator
.
Etapas da migração
- Para permitir a incorporação de atividades para 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 para um aplicativo com antecedência. - Proporção de
SplitInfo
- 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()
.
SplitRule
migração de propriedade:minWidth
eminSmallestWidth
agora 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 dividaminWith
em pixels pordisplayMetrics#density
.
- As constantes de comportamento de conclusão precisam ser migradas para constantes de classe semelhantes a enumeração
FinishBehavior
:FINISH_NEVER
muda paraFinishBehavior.NEVER
.FINISH_ALWAYS
muda paraFinishBehavior.ALWAYS
.FINISH_ADJACENT
muda paraFinishBehavior.ADJACENT
.
- A direção do layout precisa ser migrada para
SplitAttributes.LayoutDirection
:ltr
muda paraSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
muda paraSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
muda paraSplitAttributes.LayoutDirection.LOCALE
.splitRatio
precisa ser migrado paraSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migração:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
alterações emkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
mudanças emkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
esetFinishSecondaryWithPrimary
usam as constantes de enumeraçãoFinishBehavior
. Consulte "Migrações de SplitRule" para mais detalhes.- Use
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
para mostrar divisões em dispositivos no modo retrato.
SplitPlaceholder.Builder
migração:- Tem apenas os parâmetros
filters
eplaceholderIntent
. Outras propriedades são movidas para setters. Consulte "Migrações SplitPairRule.Builder" para mais detalhes. setFinishPrimaryWithPlaceholder
usa as constantes semelhantes a enumeraçãoFinishBehavior
. Consulte "Migrações de SplitRule" para mais detalhes.setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
serão alterados 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 os 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çar
ActivityEmbedding
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
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
foi adicionado como uma propriedade booleana da tag<application>
no manifesto do app.- O uso de
isSplitSupported
foi descontinuado e substituído porsplitSupportStatus
para fornecer informações mais detalhadas sobre o motivo da indisponibilidade do recurso dividido. - A classe aninhada
SplitController.SplitSupportStatus
foi adicionada para fornecer constantes de estado para a propriedadesplitSupportStatus
. - O
SplitController
foi refatorado para vários módulos:- Módulo
ActivityEmbeddingController
para APIs relacionadas aActivity
ouActivityStack
. isActivityEmbedded
movido deSplitController
paraActivityEmbeddingController
.- Módulo
RuleController
para operações relacionadas aEmbeddingRule
: - APIs
SplitController
removidas:clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- APIs
RuleController
adicionadas:addRule()
: adiciona uma regra ou atualiza a regra que tem 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 com base em definições de regras XML.
- Módulo
- Todos os módulos exigem um contexto para ser inicializado pelo método
#getInstance()
, incluindo:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- A classe
EmbeddingAspectRatio
foi adicionada para definir constantes de comportamento de tipo enumeração relacionadas à proporção de exibição. - A classe
SplitAttributes
foi adicionada para definir o layout dividido. - Foram adicionadas funções de calculadora
SplitAttributes
aSplitController
para personalizar layouts divididos:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
para verificar se as APIs SplitAttributesCalculator têm suporte no dispositivo.
- O campo
EmbeddingRule#tag
foi adicionado. - Atualizações da API em
SplitRule
:- Adicionado
defaultSplitAttributes
: define o layout de divisão padrão de uma divisão. substituisplitRatio
elayoutDirection
. - Foi adicionada a tradução das propriedades XML
splitRatio
esplitLayoutDirection
paradefaultSplitAttributes
. - Mudamos as definições de dimensão mínima para usar pixels de densidade independente (dp, na sigla em inglês) em vez de pixels.
minHeightDp
foi adicionado com valor padrão de 600 dp.- Mudança de
minWidth
paraminWidthDp
, com o valor padrão de 600 dp. - Mudança de
minSmallestWidth
paraminSmallestWidthDp
, com o valor padrão de 600 dp. maxAspectRatioInHorizontal
com valor padrãoALWAYS_ALLOW
foi adicionado.maxAspectRatioInPortrait
com valor padrão1.4
foi adicionado.- 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
deSplitPairRule
eSplitPlaceholderRule
.
- Adicionado
- Substituímos
SplitInfo#getSplitRatio()
porSplitInfo#getSplitAttributes()
para fornecer mais informações relacionadas à divisão.
WindowLayout (link em inglês)
- Foi adicionado suporte a contexto de interface de não atividade para
WindowInfoTracker
. - Foi adicionado um contexto da interface de não atividade a
WindowMetricsCalculator
.
Etapas da migração
- Para permitir a incorporação de atividades para 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 para um aplicativo com antecedência. - Proporção de
SplitInfo
- 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:
SplitController
migração:SplitController.getInstance()
muda paraSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
alterações emRuleController.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()
.
SplitRule
migração de propriedade:minWidth
eminSmallestWidth
agora 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 dividaminWith
em pixels pordisplayMetrics#density
.
- As constantes de comportamento de conclusão precisam ser migradas para constantes de classe semelhantes a enumeração
FinishBehavior
:FINISH_NEVER
muda paraFinishBehavior.NEVER
.FINISH_ALWAYS
muda paraFinishBehavior.ALWAYS
.FINISH_ADJACENT
muda paraFinishBehavior.ADJACENT
.
- A direção do layout precisa ser migrada para
SplitAttributes.LayoutDirection
:ltr
muda paraSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
muda paraSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
muda paraSplitAttributes.LayoutDirection.LOCALE
.splitRatio
precisa ser migrado paraSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migração:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
alterações emkotlin 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() )
setFinishPrimaryWithSecondary
esetFinishSecondaryWithPrimary
usam as constantes de enumeraçãoFinishBehavior
. Consulte "Migrações de SplitRule" para mais detalhes.- Use
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
para mostrar divisões em dispositivos no modo retrato.
SplitPlaceholder.Builder
migração:- Tem apenas os parâmetros
filters
eplaceholderIntent
. Outras propriedades são movidas para setters. Consulte "Migrações SplitPairRule.Builder" para mais detalhes. setFinishPrimaryWithPlaceholder
usa as constantes semelhantes a enumeraçãoFinishBehavior
. Consulte "Migrações de SplitRule" para mais detalhes.setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
serão alterados 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 os 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
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 modoRearDisplay
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
:- Substituição de
alwaysAllow()
ealwaysDisallow()
porALWAYS_ALLOW
eALWAYS_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
SplitRule
agora usamaxAspectRatioInPortrait/Landscape
. Ela só permite atividades divididas quando a proporção dos limites pai é menor ou igual aomaxAspectRatio
solicitado (Ia5990). - Mudança de
RuleController#parseRules
para 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
registerRule
paraaddRule
. - Mudança de
unregisterRule
pararemoveRule
. - Substituição de
getSplitRules
porgetRules
, já queActivityRule
não é uma regra de divisão. - Adição de
RuleController#setRules
para definir várias regras. - Extração de APIs relacionadas a regras de
SplitController
para oRuleController
Singleton. São elas: addRule
removeRule
getRules
setRules
clearRules
parseRules
- Extração de
#isActivityEmbedded
deSplitController
para oActivityEmbeddingController
Singleton. São elas: isActivityEmbedded
- A
SplitController#initialize
foi removida. Para definir regras com base no arquivo XML, useRuleController#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)
- 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 deSplitController#clearRegisteredRules
, chameRuleController#parseRules
com o ID de recursos XML e chameRuleController#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:
- Uso de dimensões mínimas no DP, em vez de pixels, para
SplitRule
. - Refatoração para que o builder
SplitRule
use 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#layoutDir
foi renomeado como#layoutDirection
, eSplitRule Builder#setLayoutDir
foi 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
ActivityStack
está vazia paraActivityEmbedding
. - As tags experimentais da API foram removidas das APIs
ActivityEmbedding
. - O construtor
ActivityRule
foi ocultado, já que oBuilder
é a maneira mais recomendada de construir. - Um método experimental foi adicionado para receber
WindowInsets
nasWindowMetrics
. - 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 oisEmpty
divertido. - As atividades do parâmetro
ActivityStack
foram renomeadas comoactivitiesInProcess
(Ia5055). ActivityFilter#matchesClassName
eActivityFilter#matchesClassNameOrWildCard
foram removidos por serem confusos.- O
ActivityFilter#componentName
abdActivityFilter#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
eWindowMetricsCalculatorCompat
(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
eSplitPlaceholderRule.finishPrimaryWithPlaceholder
foram 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
WindowAreaController
e APIs para permitir que o modoRearDisplay
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
eFoldingFeature
.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
- 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
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ão1.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
paraocclusionType
.
- 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-java
foi adicionado para expor APIs compatíveis com Java para registrar e cancelar o registro de callbacks. - Novos artefatos
window-rxjava2
ewindow-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. UseFoldingFeature
(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.).