Compose Animation

Crie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário.
Atualização mais recente Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
1.º de setembro de 2021 1.0.2 - - 1.1.0-alpha03

Estrutura

O Compose é uma combinação de seis IDs de grupos do Maven no androidx. Cada grupo contém um subconjunto direcionado de funcionalidades, cada um com um conjunto próprio de notas da versão.

Esta tabela explica os grupos e contém links para cada conjunto de notas da versão.

GrupoDescrição
compose.animationCrie animações nos aplicativos Jetpack Compose para enriquecer a experiência do usuário.
compose.compilerTransforme funções que podem ser @compostas e ative otimizações com um plug-in do compilador Kotlin.
compose.foundationCrie aplicativos do Jetpack Compose com elementos básicos prontos e amplie a base para criar suas próprias peças de sistema de design.
compose.materialCrie IUs do Jetpack Compose com componentes do Material Design prontos para uso. Este é o ponto de entrada de nível mais alto do Compose, projetado para fornecer componentes que correspondam aos descritos em www.material.io.
compose.runtimeElementos fundamentais do modelo de programação e do gerenciamento de estado do Compose e do ambiente de execução principal do plug-in Compose Compiler.
compose.uiComponentes fundamentais da IU do Compose necessários para interagir com o dispositivo, incluindo layout, desenho e entrada.

Declarar dependências

Para adicionar uma dependência ao Compose, adicione o repositório Maven do Google ao seu projeto. Leia 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.compose.animation:animation:1.1.0-alpha03"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.0-alpha03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.animation:animation:1.1.0-alpha03")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.0-alpha03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Para ver mais informações sobre dependências, consulte Adicionar dependências de build.

Feedback

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

Criar novo problema

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

Versão 1.1.0

Versão 1.1.0-alpha03

1.º de setembro de 2021

Lançamento de androidx.compose.animation:animation:1.1.0-alpha03, androidx.compose.animation:animation-core:1.1.0-alpha03 e androidx.compose.animation:animation-graphics:1.1.0-alpha03. A versão 1.1.0-alpha03 contém estas confirmações.

Novos recursos

  • O Compose 1.1.0-alpha03 foi atualizado para depender do Kotlin 1.5.30 (I74545).

Versão 1.1.0-alpha02

18 de agosto de 2021

Lançamento de androidx.compose.animation:animation:1.1.0-alpha02, androidx.compose.animation:animation-core:1.1.0-alpha02 e androidx.compose.animation:animation-graphics:1.1.0-alpha02. A versão 1.1.0-alpha02 contém estas confirmações.

Mudanças na API

  • O StartOffset agora é compatível com recursos repetíveis e infiniteRepeatable, como uma maneira de atrasar o horário de início ou avançar a animação antes que ela comece. Esse deslocamento inicial não será repetido (Ic679f, b/195079908).
  • Nova transição de entrada/saída para escala. Ela pode ser usada em combinação com outros tipos de Enter/ExitTransitions (I372da, b/191325593).

Versão 1.1.0-alpha01

4 de agosto de 2021

Lançamento de androidx.compose.animation:animation:1.1.0-alpha01, androidx.compose.animation:animation-core:1.1.0-alpha01 e androidx.compose.animation:animation-graphics:1.1.0-alpha01. A versão 1.1.0-alpha01 contém estas confirmações.

Mudanças na API

  • AnimatedImageVector e as APIs relacionadas agora estão no novo módulo androidx.compose.animation:animation-graphics (I60873).

Correções de bugs

Versão 1.0.2

Versão 1.0.2

1.º de setembro de 2021

Lançamento de androidx.compose.animation:animation:1.0.2 e androidx.compose.animation:animation-core:1.0.2. A versão 1.0.2 contém estas confirmações.

Atualização para oferecer compatibilidade com a versão 1.0.2 do Compose. O Compose 1.0.2 ainda é compatível com 1.5.21 do Kotlin.

Versão 1.0.1

Versão 1.0.1

4 de agosto de 2021

Lançamento de androidx.compose.animation:animation:1.0.1 e androidx.compose.animation:animation-core:1.0.1. A versão 1.0.1 contém estas confirmações.

Atualizações de dependência

  • Atualização para depender do Kotlin 1.5.21.

Versão 1.0.0

Versão 1.0.0

28 de julho de 2021

Lançamento de androidx.compose.animation:animation:1.0.0 e androidx.compose.animation:animation-core:1.0.0. A versão 1.0.0 contém estas confirmações.

Principais recursos da versão 1.0.0

Esta é a primeira versão estável do Compose. Veja mais detalhes na postagem do blog oficial sobre a versão do Compose (link em inglês).

Problemas conhecidos

  • Se você está usando o Android Studio Bumblebee Canary 4 ou o AGP 7.1.0-alpha04/7.1.0-alpha05, pode ocorrer a seguinte falha:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Para corrigi-la, aumente temporariamente a minSdkVersion para 24+ no arquivo build.gradle. Esse problema será corrigido na próxima versão do Android Studio Bumblebee e no AGP 7.1 (b/194289155).

Versão 1.0.0-rc02

14 de julho de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-rc02 e androidx.compose.animation:animation-core:1.0.0-rc02. A versão 1.0.0-rc02 contém estas confirmações.

Versão 1.0.0-rc01

1º de julho de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-rc01 e androidx.compose.animation:animation-core:1.0.0-rc01. A versão 1.0.0-rc01 contém estas confirmações.

Correções de bugs

  • InfiniteAnimationPolicy foi movido para androidx.compose.ui:ui (I5eb09, b/160602714).

Versão 1.0.0-beta09

16 de junho de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta09 e androidx.compose.animation:animation-core:1.0.0-beta09. A versão 1.0.0-beta09 contém estas confirmações.

Mudanças na API

  • Novo AnimatedContent que pode ser composto. Ele gerencia a mudança de conteúdo usando ContentTransform personalizável conforme novos conteúdos de destino entram e o conteúdo inicial sai. Diferentes combinações de transições de entrada e saída podem ser usadas para produzir uma aparência personalizada. Como parte da transformação de conteúdo, AnimatedContent anima automaticamente o próprio tamanho para corresponder ao conteúdo recebido (I2c3df).
  • ManualFrameClock foi removido. Se você precisar controlar as animações, use composeTestRule.mainClock (I3c3e8, b/189951065).

Regras de perfil adicionadas

Nesta versão, adicionamos as regras de perfil aos seguintes módulos do Compose (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

O que são as regras de perfil?

  • As regras de perfil para uma biblioteca são especificadas em um arquivo de texto baseline-prof.txt localizado no diretório src/main ou equivalente. O arquivo especifica uma regra por linha, em que uma regra, nesse caso, é um padrão para a correspondência de métodos ou classes na biblioteca. A sintaxe dessas regras é um superconjunto do formato de perfil do ART legível que é utilizada ao usar adb shell profman --dump-classes-and-methods .... Essas regras podem ter uma das duas formas destinadas a métodos ou classes.

  • Uma regra de método terá o seguinte padrão:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • E uma regra de classe terá o seguinte padrão:

    <CLASS_DESCRIPTOR>
    
  • Aqui, <FLAGS> é um ou mais dos caracteres H, S e P, para indicar se esse método precisa ser sinalizado como "Hot" (frequente), "Startup" (de inicialização) ou "Post Startup" (pós-inicialização).

  • O <CLASS_DESCRIPTOR> é o descritor da classe à qual o método desejado pertence. Por exemplo, a classe androidx.compose.runtime.SlotTable teria um descritor de Landroidx/compose/runtime/SlotTable;.

  • A <METHOD_SIGNATURE> é a assinatura do método e inclui o nome, os tipos de parâmetro e os tipos de retorno do método. Por exemplo, o método fun isPlaced(): Boolean em LayoutNode tem a assinatura isPlaced()Z.

  • Esses padrões podem ter caracteres curinga (**, * e ?) para que uma única regra inclua vários métodos ou classes.

O que as regras fazem?

  • Um método com a sinalização H indica que ele é um método "hot" (frequente) e precisa ser compilado com antecedência.

  • Um método com a sinalização S indica que ele é chamado na inicialização e precisa ser compilado com antecedência para evitar o custo da compilação e interpretação dele no momento da inicialização.

  • Um método com a sinalização P indica que ele é chamado após a inicialização.

  • Uma classe presente nesse arquivo indica que ela é usada durante a inicialização e precisa ser pré-alocada no heap para evitar o custo do carregamento dela.

Como isso funciona?

  • As bibliotecas podem definir essas regras que serão empacotadas nos artefatos do AAR. Quando um app é criado com esses artefatos, essas regras são mescladas e usadas para criar um perfil do ART binário, compacto e específico para o app. O ART poderá usar esse perfil quando o app for instalado em dispositivos para compilar antecipadamente um subconjunto específico do app e melhorar o desempenho dele, especialmente a primeira execução. Isso não terá efeito nos aplicativos depuráveis.

Versão 1.0.0-beta08

2 de junho de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta08 e androidx.compose.animation:animation-core:1.0.0-beta08. A versão 1.0.0-beta08 contém estas confirmações.

Correções de bugs

  • Agora, detectDragGesures, detectVerticalGestures e detectHorizontalGestures consumirão a mudança de posição automaticamente, sem precisar chamar change.consumePositionChange nos callbacks onDrag (I42fc4, b/185096350, b/187320697).
  • Modifier.onGloballyPositioned() mudou para informar as coordenadas desse modificador na cadeia de modificadores, não as coordenadas de layout após aplicar todos os modificadores. Isso significa que agora a ordem dos modificadores afeta as coordenadas que seriam informadas (Ieb67d, b/177926591).

Versão 1.0.0-beta07

18 de maio de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta07 e androidx.compose.animation:animation-core:1.0.0-beta07. A Versão 1.0.0-beta07 contém estas confirmações.

Mudanças na API

  • Nova API AnimatedVisibility compatível com a visibilidade a ser especificada em um MutableTransitionState. Isso também permite que os estados da animação sejam observados externamente à AnimatedVisibility pelo currentState e isIdle.
    • Compatibilidade com a nova transição filha em Transition.
    • Compatibilidade com a animação de saída/entrada personalizada em AnimatedVisibility usando AnimationScope.transition.
    • Novo modificador animateEnterExit que pode ser acessado por todos os elementos filhos de AnimatedVisibility.
    • Suspensão do uso das APIs AnimatedVisibility que recebem um parâmetro initiallyVisible (I702f3).

Versão 1.0.0-beta06

5 de maio de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta06 e androidx.compose.animation:animation-core:1.0.0-beta06. A versão 1.0.0-beta06 contém estas confirmações.

Versão 1.0.0-beta05

21 de abril de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta05 e androidx.compose.animation:animation-core:1.0.0-beta05. A versão 1.0.0-beta05 contém estas confirmações.

Correções de bugs

  • Os arquivos AndroidManifest de ui-test-manifest e ui-tooling-data agora são compatíveis com o Android 12 (I6f9de, b/184718994).

Versão 1.0.0-beta04

7 de abril de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta04 e androidx.compose.animation:animation-core:1.0.0-beta04. A versão 1.0.0-beta04 contém estas confirmações.

Mudanças na API

  • As instâncias públicas de RowScope, ColumnScope, BoxScope e BoxWithConstraintsScope foram removidas (I4e83e, b/181869067).

Versão 1.0.0-beta03

24 de março de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta03 e androidx.compose.animation:animation-core:1.0.0-beta03. A versão 1.0.0-beta03 contém estas confirmações.

Versão 1.0.0-beta02

10 de Março de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta02 e androidx.compose.animation:animation-core:1.0.0-beta02. A versão 1.0.0-beta02 contém estas confirmações.

Correções de bugs

  • Aplicação de restrições ao uso público de APIs experimentais (I6aa29, b/174531520).

Versão 1.0.0-beta01

24 de fevereiro de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-beta01 e androidx.compose.animation:animation-core:1.0.0-beta01. A versão 1.0.0-beta01 contém estas confirmações.

Esta é a primeira versão do Compose 1.0.0 Beta.

Mudanças na API

  • InteractionState foi substituído por [Mutable]InteractionSource.
    • As interfaces são responsáveis por emitir / coletar eventos de interação.
    • Em vez de transmitir interactionState = remember { InteractionState() } para componentes como Button e Modifier.clickable(), use interactionSource = remember { MutableInteractionSource() }.
    • Em vez de: Interaction.Pressed in interactionState, use as funções de extensão em InteractionSource, como InteractionSource.collectIsPressedAsState().
    • Para casos de uso complexos, use InteractionSource.interactions para observar o fluxo de interações. Consulte as amostras e a documentação do InteractionSource para mais informações
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378).
  • Mudança dos pacotes de métodos smoothScrollBy e scrollBy para androidx.compose.foundation.gestures.* (I3f7c1, b/175294473).
  • Os modificadores de tamanho foram renomeados. Modifier.width/height/size foi renomeado como requiredWidth/requiredHeight/requiredSize. Modifier.preferenceWidth/preferenceHeight/preferencialSize foi renomeado como width/height/size (I5b414).
  • A orientação foi movida para o pacote básico. VelocirtTracker foi movido de ui.gesture para ui.input.pointer (Iff4a8, b/175294473).
  • AnimationClockObservable e subclasses foram removidos. AnimatedFloat foi removido (Icde52, b/177457083).
  • Modifier.draggable agora aceita DraggableState em vez de um lambda simples. Você pode criar o estado usando o rememberDraggableState { delta -> } para ter o mesmo comportamento de antes (Ica70f, b/175294473).
  • As APIs animate, animatedValue, AnimatedValue foram removidas (If27bc, b/177457083).
  • AnimationEndReason.Interrupted foi removido. CancellationException será gerada se a animação for interrompida (I2cbbc, b/179695417).
  • A API TargetAnimation foi removida (If47d1, b/177457083).

Versão 1.0.0-alpha12

10 de fevereiro de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-alpha12 e androidx.compose.animation:animation-core:1.0.0-alpha12. A versão 1.0.0-alpha12 contém estas confirmações.

Mudanças na API

  • Modifier.pointerInput agora exige que as chaves "remember" indiquem quando a corrotina de detecção de entrada do ponteiro precisa ser reiniciada para novas dependências (I849cd).
  • Bounds foi renomeado como DpRect (I4b32a).
  • Unificação do nome do parâmetro de AnimationSpec para animationSpec em todo o sistema de animação. Além disso, haverá a restrição de Enter/ExitTransition para aceitar FiniteAnimationSpec (Ie47c5, b/177457083).
  • Animatable.snapTo e Animatable.stop agora são funções de suspensão (If4288).
  • De modo semelhante a quando removemos o state { 0 } que pode ser composto e passamos a promover o uso como remember { mutableStateOf(0) }, removeremos o savedInstanceState { 0 } que pode ser composto. Use rememberSaveable { mutableStateOf(0) } para salvar e restaurar automaticamente se o tipo usado dentro de MutableState puder ser armazenado no pacote. Se você transmitia um objeto de economia personalizado, agora precisará usar uma nova sobrecarga de rememberSaveable, que tem o parâmetro stateSaver. O uso será assim: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004).
  • A assinatura do método do Crossfade foi atualizada para ser mais consistente com o restante do sistema de animação (Ib05ed, b/177457083).
  • rememberSavedInstanceState() foi renomeado como rememberSaveable() e movido para o pacote androidx.compose.runtime.saveable (I1366e, b/177338004).
  • RestorableStateHolder foi renomeado como SaveableStateHolder e movido para o pacote androidx.compose.runtime.saveable. O método interno RestorableStateProvider foi renomeado como SaveableStateProvider. O tipo genérico foi removido para que você possa transmitir qualquer valor como uma chave. A anotação experimental não é mais necessária (I0902e, b/174598702).
  • A API Modifier.animateContentSize foi atualizada para ser consistente com o restante do sistema de animação (I0bf75, b/177457083).
  • O uso de AnimatedValue/Float foi suspenso. Use o Animatable (I71345, b/177457083).
  • O uso de tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter e pressIndicaitonGestureFilter foi suspenso. Use Modifier.clickable ou Modifier.pointerInput com a função detectTapGestures (I6baf9, b/175294473).
  • Introdução de um elemento de contexto de corrotina InfiniteAnimationPolicy que será aplicado em animações infinitas. Por padrão, nenhuma política é instalada, exceto durante a execução de testes com ComposeTestRule (I50ec4, b/151940543).
  • Os métodos de desestruturação e copy() foram removidos de várias classes em que raramente eram usados (I26702, b/178659281).
  • Agora, o tempo de reprodução na animação é unificado em nanossegundos (If776a).
  • O uso do artefato compose:runtime-dispatch foi suspenso. MonotonicFrameClock agora pode ser encontrado em compose:runtime, e AndroidUiDispatcher pode ser encontrado em compose:ui (Ib5c36).
  • Foram adicionados Animation.isInfinite e VectorizedAnimationSpec.isInfinite, que sinalizam se uma animação é infinita ou não. Isso pode ser usado em implementações de animações para lidar com essas animações. Por exemplo, uma mensagem especial de "tempo restante" pode ser exibida ou, durante os testes, a animação pode ser cancelada para evitar uma espera indefinida pelo estado de inatividade (Iebb05, b/151940543).
  • Uso de Long em vez de Uptime como tipo de tempo de animação (Ie3aa7, b/177420019).

Versão 1.0.0-alpha11

28 de janeiro de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-alpha11 e androidx.compose.animation:animation-core:1.0.0-alpha11. A versão 1.0.0-alpha11 contém estas confirmações.

Mudanças na API

  • A Transition baseada em TransitionDefinition foi suspensa (I0ac57).
  • Um campo de rótulo é adicionado para que Transition e animações filhas sejam exibidas nas ferramentas (I619fb).
  • animateAsState agora é animateFooAsState, em que Foo é o tipo de variável que está sendo animada. Por exemplo, Float, Dp, Offset etc (Ie7e25).
  • Nova InfiniteTransition que executa qualquer número de animações filhas (I1da81).
  • Mudança das interfaces de parâmetro com estado do Material Design para que tenham funções que podem ser compostas e que retornam State<T>. Adiciona Animatable.asState() para facilitar a conversão de um Animatable em um State. Também muda o animateElevation para que se torne uma extensão de suspensão no Animatable (If613c).

Correções de bugs

  • O uso de onCommit, onDispose e onActive foi suspenso em favor das APIs SideEffect e DisposableEffect (If760e).
  • O estado inicial de updateTransition agora é compatível (Ifd51d).
  • Adicionamos o parâmetro de descrição de conteúdo a Image e Icon. Ele é usado para fornecer descrição para os serviços de acessibilidade (I2ac4c).
  • O uso de invalidate e writingReference() foi suspenso em favor de currentRecomposeScope e RememberComAnnotationReference, respectivamente (I583a8).
  • Duration e Uptime serão substituídos por milissegundos Long, e essa etapa removerá a dependência de entrada do ponteiro nessas classes (Ia33b2, b/175142755, b/177420019).
  • clickable, toggleable e selectable agora podem ser criados fora da composição (I0a130, b/172938345, b/175294473).
  • Easing foi mudado para uma interface funcional (Ib14e5).
  • Novo método de fábrica items(count: Int) para o escopo de LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) e itemsIndexed(items: List) agora são funções de extensão, portanto, você precisa importá-las manualmente quando usá-las. Novas sobrecargas de extensão para Arrays: items(items: Array) e itemsIndexed(Array) (I803fc, b/175562574).
  • Use TestCoroutineDispatcher nos testes (I532b6).
  • Remoção de PointerInputData e mudança de PointerInputChange para fornecer todos os campos de PointerInputData. PointerInputEvent e PointerInputEventData agora são internos porque não são usados em nenhuma API pública (Ifff97, b/175142755).

Versão 1.0.0-alpha10

13 de janeiro de 2021

Lançamento de androidx.compose.animation:animation:1.0.0-alpha10 e androidx.compose.animation:animation-core:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações.

Mudanças na API

  • Modificação de Velocity para ter partes de componentes e operações matemáticas (Ib0447).
  • @ExperimentalTesting foi renomeado para @ExperimentalTestApi para ser consistente com anotações de API experimentais semelhantes (Ia4502, b/171464963).
  • Renomeação de Posição para DpOffset e remoção de getDistance() (lb2dfd).
  • Remoção da API public Any.identityHashCode() (I025d7).

Correções de bugs

  • Nova API baseada em corrotina Animatable que garante exclusividade mútua entre as animações. Nova DecayAnimationSpec para ser compatível com animação de redução multidimensional (I820f2, b/168014930).
  • animate() agora é substituído por animateAsState(), que retorna um State<T> em vez de T. Isso permite um desempenho melhor, já que o escopo de invalidação pode ser restrito ao local em que o valor do State é lido (Ib179e).

Versão 1.0.0-alpha09

16 de dezembro de 2020

Lançamento de androidx.compose.animation:animation:1.0.0-alpha09 e androidx.compose.animation:animation-core:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações.

Mudanças na API

  • Dp.VectorConverter, Position.VectorConverter etc. foram movidos para animation-core e os VectorConveters antigos foram suspensos (If0c4b).
  • Introdução de um conjunto totalmente novo de APIs Transition com facilidade de uso melhorada e compatibilidade com animações adicionadas e destinos de animação calculados dinamicamente. Essas APIs são marcadas como experimentais para facilitar a diferenciação da API baseada em TransitionDefinition (Ia7fe3).

Correções de bugs

  • Lambdas em modificadores de deslocamento agora retornam IntOffset em vez de Float (Ic9ee5, b/174137212, b/174146755).
  • Suspensão do uso de LazyColumnFor, LazyRowFor, LazyColumnForIndexed e LazyRowForIndexed. Use LazyColumn e LazyRow (I5b48c).
  • Para suspender as APIs de entrada de ponteiro, o HandlePointerInputScope foi renomeado como AwaitPointerEventScope e o handlePointerInput() como awaitPointerEventScope() (Idf0a1, b/175142755).
  • Nova função InfiniteRepeatable para criar um InfiniteRepeatableSpec (I668e5).
  • Remoção da anotação de ExperimentalPointerInput (Ia7a24).

Versão 1.0.0-alpha08

2 de dezembro de 2020

Lançamento de androidx.compose.animation:animation:1.0.0-alpha08 e androidx.compose.animation:animation-core:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.

Mudanças na API

  • Adição de verificação de lint para posicionamento e nomeação do parâmetro lambda composto, para verificar a consistência com as diretrizes do Compose. Também ocorreu a migração de algumas APIs usando children como o nome do lambda final para content, de acordo com a verificação e as orientações do lint (Iec48e).
  • As APIs anteriormente obsoletas foram removidas:
    • Modifier.onPositioned foi removido. Use Modifier.onGloballyPositioned.
    • Modifier.onDraw foi removido. Use Modifier.onDrawBehind.
    • Modifier.plus foi removido. Use Modifier.then.
    • Color.Unset foi removido. Use Color.Unspecified.
    • A classe PxBounds foi removida. Use Rect.
    • (Ie9d02, b/172562222).
  • Opção temporariamente adicionada para permitir que o TestAnimationClock seja orientado pelo MonotonicFrameClock (I1403b, b/173402197).

Correções de bugs

  • Renomeação de Modifier.drawLayer para Modifier.graphicsLayer. Além disso, houve a atualização das classes relacionadas para GraphicsLayer de acordo com o feedback do conselho da API (I0bd29, b/173834241).
  • Adição de APIs Modifier.scale/rotate como conveniências para drawLayer.
    • Renomeação de Modifier.drawOpacity para Modifier.alpha.
    • Renomeação de Modifier.drawShadow para Modifier.shadow (I264ca, b/173208140).
  • Os campos de posição e de tempo de atividade do PointerInputData não são mais anuláveis (Id468a).
  • Os modificadores offsetPx foram renomeados como offset. Agora, eles usam parâmetros lambda em vez de State (Ic3021, b/173594846).
  • Novas APIs para executar animações em corrotinas (Ied662).
  • Ambientes nomeados com Ambient como sufixo foram suspensos e substituídos por novas propriedades prefixadas com Ambient, seguindo outras diretrizes da API Compose e Ambients (I33440).
  • O controle de tempo em testes (TestAnimationClock e os usos dele) agora é experimental (I6ef86, b/171378521).
  • Remoção do antigo módulo ui-test e dos stubs dele (I3a7cb).
  • A função RestorableStateHolder.withRestorableState foi renomeada como RestorableStateProvider (I66640).
  • A interface Alignment foi atualizada e transformada em funcional (I46a07, b/172311734).

Versão 1.0.0-alpha07

11 de novembro de 2020

Lançamento de androidx.compose.animation:animation:1.0.0-alpha07 e androidx.compose.animation:animation-core:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.

Correções de bugs

  • AmbientTextStyle, ProvideTextStyle e AmbientContentColor de base estão obsoletos. Em vez disso, use as novas versões disponíveis na biblioteca Material. Em aplicativos que não usam Material, crie seus próprios ambientes de temas específicos do sistema de design que possam ser consumidos nos seus componentes (I74acc, b/172067770).
  • foundation.Text foi descontinuado e substituído por material.Text. Para uma API de texto básica e discreta que não consome valores de um tema, consulte androidx.compose.foundation.BasicText (If64cb).
  • MeasureResult foi removido do MeasureScope (Ibf96d, b/171184002).
  • Vários símbolos relacionados ao layout foram movidos de androidx.compose.ui para androidx.compose.layout.ui (I0fa98, b/170475424).

Versão 1.0.0-alpha06

28 de outubro de 2020

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

Mudanças na API

  • Ativação de transições em ComposeTestRule. Remoção da opção para ativar o cursor piscante na ComposeTestRule (If0de3).

Versão 1.0.0-alpha05

14 de outubro de 2020

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

Mudanças na API

  • Nova interface e subclasses do Animation: essas classes armazenam as condições de início e fim para animações, permitindo que o valor e a velocidade sejam consultados apenas por tempo de reprodução (Ie95bd, b/163329867).

Correções de bugs

  • OnPositionedModifier foi renomeado como OnGloballyPositionedModifier e onPositioned() foi renomeado como onGloballyPositioned(). (I587e8, b/169083903)
  • Suspensão do uso das APIs contentColor() e currentTextStyle() e substituição delas pelos ambientes AmbientContentColor e AmbientTextStyle, respectivamente. É possível acessar o valor atual usando .current na propriedade do ambiente, assim como em qualquer outro ambiente. Essa mudança foi feita para manter a consistência e para evitar a existência de várias maneiras de alcançar o mesmo resultado. Também renomeia algumas propriedades de ambiente para descrever melhor a finalidade delas da seguinte maneira:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Versão 1.0.0-alpha04

1º de outubro de 2020

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

Mudanças na API

  • Anotação de rootAnimationClockFactory, transitionEnabled, blinkingCursorEnabled e textInputServiceFactory com @VisibleForTesting, tornando-as APIs internas e ocultando o kdoc delas (I554eb, b/168308412).

Correções de bugs

  • Atualização de várias APIs Graphics
    • As APIs de transformação de escala e rotação foram atualizadas para consumir um único parâmetro Offset para representar a coordenada dinâmica em vez de parâmetros de flutuação separados para as coordenadas x/y em DrawScope e DrawTransform.
    • Remoção dos métodos Rect.expandToInclude e Rect.join.
    • Documentação do Radius atualizada para informar oval, além de elíptico.
    • Adição da documentação para indicar que o construtor público da classe Radius in-line não deve ser chamado diretamente, mas os objetos Radius precisam ser instanciados pelos construtores de função deles.
    • Remoção das APIs RoundRect para consultar topRight, bottomRight, bottomCenter etc.
    • Substituição do Rect.shift descontinuado por Rect.translate.
    • Remoção das APIs RoundRect.grow e Rect.shrink.
    • Renomeação de RoundRect.outerRect para Rect.boundingRect.
    • Remoção dos métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect e Rect.isStadium.
    • Renomeação de RoundRect.longestSide para RoundRect.maxDimension.
    • Renomeação de RoundRect.shortestSide para RoundRect.minDimension.
    • Mudança de RoundRect.center para que seja uma propriedade em vez de uma função.
    • Atualização do construtor RoundRect para consumir propriedades do Radius em vez de parâmetros individuais para valores de raio x/y.
    • Remoção das APIs Size que pressupunham ser um retângulo com origem em 0,0.
    • Adição de uma API de destruição ao Radius.
    • Migração de várias funções de extensão RoundRect para serem propriedades
    • (I8f5c7, b/168762961).
  • Descontinuação do uso de foundation.Box. Use foundation.layout.Box (Ie5950, b/167680279).
  • Stack foi renomeado como Box. O uso do Box anterior será descontinuado e foi substituído pelo novo Box em compose.foundation.layout. O comportamento do novo Box quando tem vários filhos é empilhá-los um em cima do outro. Isso é diferente do Box anterior, que se comportava de maneira semelhante a Column (I94893, b/167680279).
  • Os parâmetros de decoração do Box foram descontinuados. Se você quiser ter decorações/padding na sua caixa, use Modifiers, como Modifier.background, Modifier.border, Modifier.padding (Ibae92, b/167680279).
  • Evitamos importações estáticas de conteúdo de escopos de layout, por exemplo, alignWithSiblings no RowScope. A alternativa do escopo explícito precisa ser usada: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) } (I216be, b/166760797).

Versão 1.0.0-alpha03

16 de setembro de 2020

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

Correções de bugs

  • Os usos da gravidade foram renomeados de forma consistente para "align" ou "alignment" nas APIs de layout (I2421a, b/164077038).

Versão 1.0.0-alpha02

2 de setembro de 2020

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

Mudanças na API

  • Adição de ManualFrameClock.hasAwaiters para ver se algo está aguardando um frame desse relógio, runWithManualClock como uma substituição de runBlocking ao executar testes que precisam de um ManualFrameClock e TestUiDispatcher.Main que fornece acesso fácil ao principal agente de IU nos seus testes.

    Por exemplo:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    I0a85b, b/161247083

Correções de bugs

  • O onPreCommitte foi suspenso. O onCommit agora tem o comportamento do onPreCommit.

    O onCommit e o onActive agora são executados no mesmo frame "choreographer" que as mudanças de composição confirmadas, em vez de no início do próximo frame "choreographer" I70403

Versão 1.0.0-alpha01

26 de agosto de 2020

Lançamento de androidx.compose.animation:animation:1.0.0-alpha01 e androidx.compose.animation:animation-core:1.0.0-alpha01. A versão 1.0.0-alpha01 contém estas confirmações.

Versão 0.1.0-dev

Versão 0.1.0-dev17

19 de agosto de 2020

Lançamento de androidx.compose.animation:animation:0.1.0-dev17 e androidx.compose.animation:animation-core:0.1.0-dev17. A versão 0.1.0-dev17 contém estas confirmações.

Novos recursos

Mudanças na API

  • Offset agora é uma classe inline (Iaec70).
  • IntOffset agora é uma classe inline (Iac0bf).
  • IntSize agora é uma classe inline (I2bf42).
  • AnimatedVisibilty que pode ser composta anima o aparecimento e o desaparecimento do conteúdo filho.

    Introdução de EnterTransition e ExitTransition para trabalhar com AnimatedVisibilty que pode ser composta e fornecer três tipos diferentes de animação de aparecimento e desaparecimento: esmaecer, deslizar e expandir/reduzir o conteúdo. Os diferentes tipos de animação podem ser combinados para alcançar uma aparência mais personalizada (Idda11).

  • Suspensão do uso de PxBounds em favor de Rect. Atualização de todos os usos de PxBounds com rect e adição de descontinuação/substituição por anotações para auxiliar na migração (I37038, b/162627058).

Correções de bugs

  • PlacementScope.placeAbsolute() foi renomeado como PlacementScope.place(), e o PlacementScope.place() anterior foi renomeado como PlacementScope.placeRelative(). Por essa razão, o método PlacementScope.place() não espelhará de forma automática a posição em contextos da direita para a esquerda. Se você quiser o espelhamento, use PlacementScope.placeRelative() (I873ac, b/162916675).
  • O uso do state { ... } que pode ser composto foi substituído pelas chamadas explícitas para remember { mutableStateOf(...) } para maior clareza. Isso reduz a plataforma geral da API e o número de conceitos de gerenciamento de estado e corresponde ao padrão by mutableStateOf() para delegação de propriedade de classe (Ia5727).

Versão 0.1.0-dev16

5 de agosto de 2020

Lançamento de androidx.compose.animation:animation:0.1.0-dev16 e androidx.compose.animation:animation-core:0.1.0-dev16. A versão 0.1.0-dev16 contém estas confirmações.

Mudanças na API

  • Os conversores de vetor integrados para converter unidades integradas agora podem ser acessados por Foo.VectorConverter. Por exemplo, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter etc. (I3e273).
  • Compatibilidade com o listener final em Modifier.animateContentSize(), de modo que, quando a animação de mudança de tamanho termina, o listener seja notificado, junto do tamanho inicial/final da animação. (I277b2).
  • Novo modificador animateContentSize, que anima a mudança do tamanho do layout do modificador filho (Ieffdc).
  • Adição de MonotonicFrameAnimationClock, que permite usar um MonomonicFrameClock como um AnimationClockObservable para fazer a ponte entre os novos relógios e APIs baseados em corrotinas que ainda usam os relógios antigos com base em callback.

    O MonotonicFrameClock equivalente de ManualAnimationClock agora é ManualFrameClock (I111c7, b/161247083).

Correções de bugs

  • Atualização das APIs para compatibilidade da direita para a esquerda. LayoutDirectionAmbient foi adicionado e pode ser usado para ler e mudar a direção do layout. Modifier.rtl e Modifier.ltr foram removidos (I080b3).
  • Exigência de que o tipo T seja especificado explicitamente para o transitionDefinition (I1aded).
  • O pacote foundation.shape.corner foi nivelado para foundation.share (I46491, b/161887429).
  • Suspensão do uso de Modifier.plus. Use Modifier.then. "Then" tem um sinal mais forte de ordem, mas também proíbe o tipo Modifier.padding().background() + anotherModifier, que interrompe a cadeia e é mais difícil de ler (Iedd58, b/161529964).
  • Renomeação de Modifier.drawBackground como Modifier.background (I13677).

Versão 0.1.0-dev15

22 de julho de 2020

Lançamento de androidx.compose.animation:animation:0.1.0-dev15 e androidx.compose.animation:animation-core:0.1.0-dev15. A versão 0.1.0-dev15 contém estas confirmações.

Atualização de dependências

  • Para usar a versão 0.1.0-dev15 do Compose, será necessário atualizar suas dependências de acordo com os novos snippets de código mostrados acima em Como declarar dependências.

Mudanças na API

  • A API Transition foi modificada para retornar um TransitionState em vez de passar o TransitionState para filhos. Isso torna a API mais consistente com as APIs animate() (I24e38).
  • Parâmetro modificador adicionado para o Crossfade (I87cfe, b/159706180).
  • Uso de AnimationSpec em vez de AnimationBuilder nas APIs de nível superior para esclarecer o conceito de especificação de animação estática.
    • Melhore a DSL de transição removendo o requisito de lambda para criar AnimationSpecs, como Tween, Spring. Em vez disso, os parâmetros do construtor são recebidos diretamente.
    • Melhore a facilidade geral de uso do AnimationSpec para abrir construtores em vez de depender deles.
    • Mude a duração e o atraso de KeyFrames e Interpolação para Int. Isso elimina as transmissões desnecessárias e a sobrecarga de métodos (para oferecer compatibilidade com Long e Int) (Ica0b4).
  • Uso de IntPx substituído por Int e o de IntPxPosition por IntOffset. IntPxSize foi substituído por IntSize (Ib7b44).
  • Para consolidar o número de classes usadas para representar informações de tamanho, padronize o uso da classe Size em vez de PxSize. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar a largura e a altura como flutuantes (Ic0191).
  • Para consolidar o número de classes usadas para representar informações de posicionamento, padronize o uso da classe Offset em vez de PxPosition. Isso fornece os benefícios de uma classe in-line para usar um long para empacotar dois valores de pontos flutuantes e representar os deslocamentos x e y como flutuantes (I3ad98).
  • Substituição do uso da classe Px em várias classes de composição como parte do grande esforço de refatoração para confiar apenas em tipos primitivos e de Dp para os parâmetros de pixel (I086f4).
  • Inclusão de compatibilidade com animate() para Dp, Px, Size, Position, Bounds, PxPosition, PxSize, PxBounds, IntPx, IntPxSize, IntPxPosition, IntPxBounds e AnimationVector (Ib7518).
  • O Crossfade agora aceita o parâmetro AnimationBuilder opcional para permitir a configuração da animação (I6d6e0).
  • Todos os usos de Color anuláveis foram substituídos na API por não anuláveis e usam Color.Unset em vez de null (Iabaa7).
  • Classe ValueHolder removida. Reestruturação das classes AnimatedValue e AnimatedFloat para tornar o campo de valor da animação abstrato para que as subclasses possam observar a atualização do valor.
    • Adição de classes de modelo para AnimatedValue, AnimatedFloat etc.
    • Adição de um novo conjunto de APIs @Composable leves para animação entre valores (I79530).
  • Alterações interruptivas na API de ambientes. Consulte o registro e a documentação do Ambient<T> para ver detalhes (I4c7ee, b/143769776).
  • Novo modo de repetição: inverso. Esse modo reverte a iteração anterior à medida que a animação se repete em RepeatableSpec ou VectorizedRepeatableSpec (Ibe0f5).
  • Adições de API ao ManualAnimationClock: hasObservers: Boolean e dispatchOnSubscribe: Boolean de parâmetro construtor (Iaa134).
  • Adição de APIs para receber os limites mínimo/máximo em AnimatedFloat (Icd9cc).

Correções de bugs

  • runOnIdleCompose foi renomeado como runOnIdle (I83607).
  • Várias APIs de teste foram renomeadas para serem mais intuitivas. Todas as APIs findXYZ foram renomeadas como onNodeXYZ. Todas as APIs doXYZ foram renomeadas como performXYZ (I7f164).
  • Foram introduzidas APIs de animação sem estado de baixo nível. Essas APIs (I63bf7).
  • O Recompose que pode ser composto não é mais uma abstração útil. A maioria das recomposições precisa acontecer como resultado de atribuições MutableState. Para qualquer coisa além disso, é recomendável usar a função invalidate para acionar uma recomposição do escopo atual (Ifc992).
  • Substituição do uso da classe Px em várias classes de composição como parte do grande esforço de refatoração para confiar apenas em tipos primitivos e de Dp para os parâmetros de pixel. Classe Px excluída na íntegra (I3ff33).
  • Substituição do uso da classe Px em várias classes de composição como parte do grande esforço de refatoração para confiar apenas em tipos primitivos e de Dp para os parâmetros de pixel (Id3434).
  • Crossfade agora pode funcionar com nulo como valor inicial (Iad6a4, b/155947711).
  • Substituição do uso da classe Px em várias classes Compose como parte do grande esforço de refatoração para depender apenas de tipos primitivos e de Dp para os parâmetros de pixel (I19d02).
  • Implementações consolidadas de CanvasScope para que agora exista apenas DrawScope e ContentDrawScope. CanvasScope foi renomeado como DrawScope. Atualização de DrawScope para implementar a interface de Density e fornecer LayoutDirection. Exclusão da subclasse DrawScope em ContentDrawScope. Painter e PainterModifier foram atualizados para não manter mais uma propriedade RTL porque DrawScope já fornece isso sem ser de forma manual (I1798e).
  • Atualização das APIs de composição de nível superior que expõem uma tela para expor CanvasScope. Isso elimina a necessidade dos consumidores manterem seus próprios objetos do Paint. Os consumidores que ainda precisam de acesso a uma tela podem usar o método de extensão drawCanvas, que fornece um callback para emitir comandos de desenho (I80afd).
  • Adição dos parâmetros verticalGravity e horizontalGravity a Row e Column, respectivamente (I7dc5a).
  • O módulo ui-text foi renomeado como ui-text-core (I57dec).
  • Melhora da API DrawModifier:
    • Definição do escopo do receptor para draw() ContentDrawScope.
    • Remoção de todos os parâmetros em draw().
    • DrawScope tem a mesma interface que o antigo CanvasScope.
    • ContentDrawScope tem o método drawContent() (Ibaced, b/152919067).
  • runOnIdleCompose e runOnUiThread agora são funções globais e não métodos em ComposeTestRule (Icbe8f).
  • [Mutable] Os operadores para delegação de propriedade de estado foram movidos para extensões compatíveis com as otimizações de delegação de propriedade do Kotlin 1.4. Os autores da chamada precisam adicionar importações para continuar usando by state { ... } ou by mutableStateOf(...) (I5312c).
  • O ColouredRect foi suspenso. Use Box(Modifier.preferredSize(width, height).drawBackground(color)) (I499fa, b/152753731).
  • Substituição de Modifier mais operador por funções de extensão de fábrica (I225e4).
  • O Center que pode ser composto foi suspenso. Ele precisa ser substituído pelo modificador LayoutSize.Fill + LayoutAlign.Center ou por Box ou Stack que possam ser compostos com modificadores adequados aplicados (Idf5e0).
  • O LayoutFlexible foi renomeado como LayoutWight. O parâmetro restrito foi renomeado como preenchimento (I5977f).
  • A função que pode ser composta Opacity foi substituída pelo modificador drawOpacity (I5fb62).
  • Agora, os testes que usam AndroidComposeTestRule oferecem um relógio de animação na raiz da composição que permite que ele pause, retome e avance manualmente (Id54c5).
  • Compatibilidade com a direção direita para a esquerda no modificador LayoutPadding (I9e8da).
  • Density e DensityScope foram unidos em uma única interface. Agora você pode usar DensityAmbient.current em vez de ambientDensity(). Em vez de withDensity(density), use apenas with(density) (I11cb1).
  • Adição de métodos de cópia para vários tipos de classe inline, incluindo:
    • Offset
    • Size
    • Radius
    • Motion
    • TransformOrigin
    • O método de objeto complementar Size.copy foi suspenso e substituído pelo método de cópia de instância (Ife290, b/159905651).
  • O androidx.composte.ViewComposer foi movido para androidx.ui.node.UiComposer. androidx.compose.Emittable foi removido. Isso era redundante com o ComponentNode. O androidx.compose.ViewAdapters foi removido. Eles não são mais um caso de uso compatível. O uso de Compose.composeInto foi descontinuado. Use setContent ou setViewContent. O uso de Compose.disposeComposition foi descontinuado. Use o método dispose no Composition retornado pelo setContent. androidx.compose.Compose.subcomposeInto foi movido para androidx.ui.core.subcomposeInto. ComponentNode#emitInsertAt foi renomeado como ComponentNode#insertAt. ComponentNode#emitRemoveAt foi renomeado como ComponentNode#removeAt. ComponentNode#emitMode foi renomeado como ComponentNode#move (Idef00).