WindowManager
Atualização mais recente | Versão estável | Candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
22 de fevereiro de 2023 | 1.0.0 | - | - | 1.1.0-alpha06 |
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.0.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.0.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.0.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.0.0" // For testing implementation "androidx.window:window-testing:1.0.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.0.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.0.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.0.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.0.0") // For testing implementation("androidx.window:window-testing:1.0.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.1
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.).