Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Animación de Compose

Crea animaciones en sus aplicaciones de Jetpack Compose para enriquecer la experiencia del usuario.
Actualización más reciente Versión estable actual Próxima versión potencial Versión beta Versión alfa
24 de marzo de 2021 - - 1.0.0-beta03 -

Estructura

Compose es una combinación de 6 ID de grupo de Maven en androidx. Cada grupo contiene un subconjunto de funcionalidades objetivo, cada uno con su propio conjunto de notas de la versión.

En esta tabla, se explican los grupos y vínculos correspondiente a cada conjunto de notas de la versión.

GrupoDescripción
compose.animationCrea animaciones en sus aplicaciones de Jetpack Compose para enriquecer la experiencia del usuario.
compose.compilerTransforma las funciones que admite @Composable y habilita las optimizaciones con un complemento de compilador de Kotlin.
compose.foundationEscribe aplicaciones de Jetpack Compose con componentes fundamentales listos para usar y extiende la base para compilar tus propias piezas de sistema de diseño.
compose.materialCompila las IU de Jetpack Compose con componentes de Material Design listos para usar. Este es el punto de entrada de nivel superior de Compose, diseñado para proporcionar componentes que coincidan con los descritos en www.material.io.
compose.runtimeSe trata de los componentes fundamentales del modelo de programación de Compose y de su administración de estados, así como del entorno de ejecución principal al cual se orienta el complemento de compilación de Compose.
compose.uiSon los componentes fundamentales de la IU de Compose necesarios para interactuar con el dispositivo, incluidos el diseño, el dibujo y la entrada.

Cómo declarar dependencias

Para agregar una dependencia en Compose, debes agregar el repositorio de Maven de Google a tu proyecto. Consulta el repositorio Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

dependencies {
    implementation "androidx.compose.animation:animation:1.0.0-beta03"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.31"
        kotlinCompilerExtensionVersion "1.0.0-beta03"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.

Cómo crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.0.0

Versión 1.0.0-beta03

24 de marzo de 2021

Lanzamiento de androidx.compose.animation:animation:1.0.0-beta03 y androidx.compose.animation:animation-core:1.0.0-beta03. La versión 1.0.0-beta03 contiene estas confirmaciones.

Versión 1.0.0-beta02

10 de marzo de 2021

Lanzamiento de androidx.compose.animation:animation:1.0.0-beta02 y androidx.compose.animation:animation-core:1.0.0-beta02. La versión 1.0.0-beta02 contiene estas confirmaciones.

Correcciones de errores

  • Se aplicaron restricciones sobre el uso público de las API experimentales. (I6aa29, b/174531520)

Versión 1.0.0-beta01

24 de febrero de 2021

Lanzamiento de androidx.compose.animation:animation:1.0.0-beta01 y androidx.compose.animation:animation-core:1.0.0-beta01. La versión 1.0.0-beta01 contiene estas confirmaciones.

Esta es la primera versión de Compose 1.0.0 Beta.

Cambios en la API

  • InteractionState se reemplazó por [Mutable]InteractionSource
    • Las interfaces son responsables de emitir o recopilar eventos de interacción.
    • En lugar de pasar el elemento interactionState = remember { InteractionState() } a componentes como Button y Modifier.clickable(), usa el objeto interactionSource = remember { MutableInteractionSource() }.
    • En lugar del elemento Interaction.Pressed in interactionState, debes usar las funciones de extensión en el objeto InteractionSource, como InteractionSource.collectIsPressedAsState().
    • Para casos complejos de uso, puedes usar el elemento InteractionSource.interactions para observar el flujo de Interactions. Para obtener más información, consulta la documentación y ejemplos de InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Los paquetes de los métodos smoothScrollBy y scrollBy migraron a androidx.compose.foundation.gestures.*. (I3f7c1, b/175294473)
  • Se cambiaron los nombres de los modificadores de tamaño. Se cambió el nombre de modifier.width a requiredWidth, de modifier.height a requiredHeight y de modifier.size a requiredSize. Se cambió el nombre de modifier.preferredWidth a width, de preferredHeight a height y de preferredSize a size. (I5b414)
  • Se migró Orientation al paquete de base. Se migró VelocirtTracker de ui.gesture a ui.input.pointer. (Iff4a8, b/175294473)
  • Se quitó AnimationClockObservable, así como sus subclases. Se quitó AnimatedFloat. (Icde52, b/177457083)
  • Modifier.draggable ahora acepta DraggableState en lugar de una expresión lambda simple. Para obtener el mismo comportamiento que antes, puedes crear un estado a través de rememberDraggableState { delta -> }. (Ica70f, b/175294473)
  • Se quitaron las API de animate, animatedValue y AnimatedValue (If27bc, b/177457083).
  • Se quitó AnimationEndReason.Interrupted. Si se interrumpe la animación, se mostrará una CancellationException. (I2cbbc, b/179695417)
  • Se quitó la API de TargetAnimation. (If47d1, b/177457083)

Versión 1.0.0-alpha12

10 de febrero de 2021

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha12 y androidx.compose.animation:animation-core:1.0.0-alpha12. La versión 1.0.0-alpha12 contiene estas confirmaciones.

Cambios en la API

  • Modifier.pointerInput ahora requiere claves de memoria para indicar cuándo se debe reiniciar la corrutina de detección de la entrada del puntero para las dependencias nuevas. (I849cd)
  • El nombre de Bounds se cambió a DpRect. (I4b32a)
  • Se unificó el nombre del parámetro AnimationSpec con animationSpec en todo el sistema de animación. También se restringieron EnterTransition y ExitTransition a fin de aceptar FiniteAnimationSpec. (Ie47c5, b/177457083)
  • Animatable.snapTo y Animatable.stop ahora son funciones de suspensión. (If4288)
  • Se quitará el objeto savedInstanceState { 0 } que admite composición, de forma similar a como se quitó state { 0 }, que también admitía composición, y ahora se promociona el uso de remember { mutableStateOf(0) }, por ejemplo. En su lugar, se debe usar rememberSaveable { mutableStateOf(0) }, que se guardará y restablecerá automáticamente si el tipo usado dentro de MutableState se puede almacenar en el paquete. Si antes pasabas un objeto Saver personalizado, ahora debes usar una sobrecarga nueva de rememberSaveable, que tiene el parámetro stateSaver. Se verá de la siguiente manera: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }. (Ib4c26, b/177338004)
  • Se actualizó la firma del método Crossfade para mantener la coherencia con el resto del sistema de animación. (Ib05ed, b/177457083)
  • Se cambió el nombre de rememberSavedInstanceState() a rememberSaveable() y se movió al paquete androidx.compose.runtime.saveable. (I1366e, b/177338004)
  • Se cambió el nombre de RerestableStateHolder a SaveableStateHolder y se movió al paquete androidx.compose.runtime.saveable. Se cambió el nombre del método interno RerestableStateProvider a SaveableStateProvider. Se quitó el tipo genérico para que cualquiera pueda pasar como clave. Ya no se necesita la anotación experimental. (I0902e, b/174598702)
  • Se actualizó la API de Modifier.animateContentSize para mantener la coherencia con el resto del sistema de animación. (I0bf75, b/177457083)
  • AnimatedValue/Float dejó de estar disponible. En su lugar, usa Animatable. (I71345, b/177457083)
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter y pressIndicititGestureFilter dejaron de estar disponibles. En su lugar, usa Modifier.clickable o Modifier.pointerInput con la función detectTapGestures. (I6baf9, b/175294473)
  • Se introdujo un elemento de contexto de corrutinas InfiniteAnimationPolicy que se aplicará en animaciones infinitas. No se instala ninguna política de forma predeterminada, excepto cuando se ejecutan pruebas con ComposeTestRule. (I50ec4, b/151940543)
  • Se quitaron los métodos copy() y de desestructuración de varias clases en las que se usaban con muy poca frecuencia. (I26702, b/178659281)
  • Ahora, el tiempo de reproducción en la animación se extiende a nanosegundos. (If776a)
  • El artefacto compose:runtime-dispatch dejó de estar disponible. Ahora se puede encontrar MonotonicFrameClock en compose:runtime y AndroidUiDispatcher en compose:ui. (Ib5c36)
  • Se agregaron Animation.isInfinite y VectorizedAnimationSpec.isInfinite, que indican si una animación es infinita. Se pueden usar para un lograr un mejor manejo a la hora de implementar animaciones. Por ejemplo, se puede mostrar un mensaje especial de "tiempo restante" o se puede cancelar la animación durante las pruebas a fin de evitar la inactividad indefinida. (Iebb05, b/151940543)
  • En lugar de Uptime, usa Long como tipo de tiempo de animación (Ie3aa7, b/177420019).

Versión 1.0.0-alpha11

28 de enero de 2021

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha11 y androidx.compose.animation:animation-core:1.0.0-alpha11. La versión 1.0.0-alpha11 contiene estas confirmaciones.

Cambios en la API

  • La transición TransitionDefinition-based dejó de estar disponible (I0ac57).
  • Se agrega un campo de etiqueta para que las animaciones secundarias y de Transition se muestren en herramientas (I619fb).
  • animateAsState ahora es animateFooAsState, donde Foo es el tipo de variable que se anima, p. ej., Float, Dp, Offset, etc. (Ie7e25)
  • Se agregó una nueva InfiniteTransition que ejecuta cualquier cantidad de animaciones secundarias. (I1da81)
  • Cambia las interfaces de parámetros con estado de Material para tener funciones @Composable que muestren State<T>. Se agregó Animatable.asState() para facilitar la conversión de un objeto Animatable en un State. También cambia animElevation para que sea una extensión de suspensión en Animatable. (If613c)

Correcciones de errores

  • onCommit, onDispose y onActive dejaron de estar disponibles, y se los reemplazó con las API de SideEffect y DisposableEffect. (If760e)
  • Ahora se admite el State inicial en updateTransition. (Ifd51d).
  • Se agregó un parámetro de descripción de contenido a Image y Icon. Este se usa para proporcionar una descripción a los servicios de accesibilidad. (I2ac4c)
  • invalidate y compositionReference() dejaron de estar disponibles, y se reemplazaron con currentRecomposeScope y rememberCompositionReference, respectivamente. (I583a8)
  • Duration y Uptime se reemplazarán con Long en milisegundos, y este paso quitará la dependencia de entrada del puntero en esas clases. (Ia33b2, b/175142755, b/177420019)
  • Ahora, clickable, toggleable y selectable pueden crearse fuera de las composiciones. (I0a130, b/172938345, b/175294473)
  • Se cambió la aceleración a una interfaz funcional. (Ib14e5).
  • Se agregó un método de fábrica items(count: Int) nuevo para el alcance de LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) y itemsIndexed(items: List) ahora son funciones de extensión, asíque debes importarlas manualmente cuando las uses. Se agregaron sobrecargas de extensiones nuevas para Arrays: items(items: Array) y itemsIndexed(Array). (I803fc, b/175562574)
  • Se implementó TestCoroutineDispatcher en pruebas. (I532b6)
  • Se quitó PointerInputData y se modificó el PointerInputChange para otorgarle todos los campos de PointerInputData. Se convirtieron en internos los elementos PointerInputEvent y PointerInputEventData debido a que no se usan en ninguna API pública. (Ifff97, b/175142755)

Versión 1.0.0-alpha10

13 de enero de 2021

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha10 y androidx.compose.animation:animation-core:1.0.0-alpha10. La versión 1.0.0-alpha10 contiene estas confirmaciones.

Cambios en la API

  • Se modificó Velocity para que tuviera partes de componentes y operaciones matemáticas. (Ib0447)
  • Se cambió el nombre de @ExperimentalTesting a @ExperimentalTestApi para que sea coherente con anotaciones de API experimentales similares. (Ia4502, b/171464963)
  • Se cambió el nombre de Position a DpOffset y se quitó getDistance(). (Ib2dfd)
  • Se quitó la API pública de Any.identityHashCode(). (I025d7)

Correcciones de errores

  • Se agregó la nueva API de Animatable basada en corrutinas que garantiza la exclusividad mutua entre sus animaciones. Se agregó DecayAnimationSpec para admitir animaciones de disminución multidimensionales. (I820f2, b/168014930)
  • Se reemplazó animate() con animateAsState(), que muestra State<T>, en lugar de T. Esto mejora el rendimiento, ya que el alcance de la invalidación se puede limitar a donde se lee el valor State. (Ib179e)

Versión 1.0.0-alpha09

16 de diciembre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha09 y androidx.compose.animation:animation-core:1.0.0-alpha09. La versión 1.0.0-alpha09 contiene estas confirmaciones.

Cambios en la API

  • Se movieron p.VectorConverter, Position.VectorConverter, etc. a animation-core, y dejaron de estar disponibles los objetos VectorConveters anteriores. (If0c4b)
  • Se introdujo un conjunto completamente nuevo de API de Transition con una facilidad de uso mejorada y compatibilidad con animaciones agregadas de forma dinámica, y objetivos de animación calculados de manera dinámica. Estas API se marcan como experimentales para facilitar la diferenciación de la API de TransitionDefinition-based. (Ia7fe3)

Correcciones de errores

  • Las expresiones lambda en los modificadores de compensación ahora muestran IntOffset en lugar de Float. (Ic9ee5, b/174137212, b/174146755)
  • Dejaron de estar disponibles los objetos LazyColumnFor, LazyRowFor, LazyColumnForIndexed y LazyRowForIndexed. En su lugar, usa LazyColumn y LazyRow. (I5b48c)
  • Se cambió el nombre de HandlePointerInputScope a AwaitPointerEventScope y el de handlePointerInput() a awaitPointerEventScope() para las API de entrada de puntero de suspensión. (Idf0a1, b/175142755)
  • Se agregó una función infiniteRepeatable para crear InfiniteRepetableSpec. (I668e5)
  • Se quitó la anotación ExperimentalPointerInput. (Ia7a24)

Versión 1.0.0-alpha08

2 de diciembre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha08 y androidx.compose.animation:animation-core:1.0.0-alpha08. La versión 1.0.0-alpha08 contiene estas confirmaciones.

Cambios en la API

  • Se agregó la comprobación de lint para el nombre y la posición del parámetro lambda que se pueden componer a fin de verificar la coherencia con los lineamientos de Compose. También se migraron algunas API que usaban children como nombre de su lambda al final a content, según la comprobación y orientación de lint. (Iec48e)
  • Se quitaron las API que habían dejado de estar disponibles:
    • Se quitó Modifier.onPositioned; usa Modifier.onGloballyPositioned.
    • Se quitó Modifier.onDraw; usa Modifier.onDrawBehind.
    • Se quitó Modifier.plus; usa Modifier.then.
    • Se quitó Color.Unset; usa Color.Unspecified.
    • Se quitó la clase PxBounds. En su lugar, usa Rect.
    • (Ie9d02, b/172562222)
  • Se agregó una opción temporal para permitir que MonotonicFrameClock controle a TestAnimationClock. (I1403b, b/173402197)

Correcciones de errores

  • Se cambió el nombre de Modifier.drawLayer a Modifier.graphicsLayer, y se actualizaron las clases relacionadas con GraphicsLayer según los comentarios acordados de la API. (I0bd29, b/173834241)
  • Se agregaron API de Modifier.scale/rotate como convenientes para drawLayer.
    • Se cambió el nombre de modificador.drawOpacity a Modifier.alpha.
    • Se cambió el nombre de Modif.drawShadow a Modifier.shadow. (I264ca, b/173208140)
  • Los campos de posición y tiempo de actividad de PointerInputData se hicieron no nulos. (Id468a)
  • Se cambiaron los nombres de los modificadores de offsetPx a offset. Ahora toman parámetros lambda en lugar de State. (Ic3021, b/173594846)
  • Se agregaron API nuevas para las animaciones que se ejecutan en corrutinas. (Ied662)
  • Los entornos Ambient con el nombre Ambient como sufijo dejaron de estar disponibles, y se los reemplazó por nuevas propiedades con el prefijo Ambient, en función de otros lineamientos de la API de Compose y Ambients. (I33440)
  • El control de tiempo en las pruebas (TestAnimationClock y sus usos) ahora es experimental. (I6ef86, b/171378521)
  • Se quitó el módulo ui-tests y sus stubs. (I3a7cb)
  • Se cambió el nombre de la función RestorableStateHolder.withRestorableState por RestorableStateProvider. (I66640)
  • Se actualizó la interfaz de Alignment y se hizo funcional. (I46a07, b/172311734)

Versión 1.0.0-alpha07

11 de noviembre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha07 y androidx.compose.animation:animation-core:1.0.0-alpha07. La versión 1.0.0-alpha07 contiene estas confirmaciones.

Correcciones de errores

  • Las bases AmbientTextStyle, ProvideTextStyle y AmbientContentColor ya no están disponibles. En su lugar, utiliza las nuevas versiones que se proporcionan en la biblioteca de Material. En el caso de las aplicaciones que no son de Material, deberás crear tus propios ambientes de temas específicos de sistemas de diseño que se puedan consumir en tus componentes. (I74acc, b/172067770)
  • foundation.Text dejó de estar disponible y se reemplazó por material.Text. Para ver una API de texto básica y sin tendencias que no consuma valores de un tema, consulta androidx.compose.foundation.BasicText. (If64cb)
  • Se quitó MeasureResult de MeasureScope. (Ibf96d, b/171184002)
  • Varios símbolos relacionados con el diseño se movieron de androidx.compose.ui a androidx.compose.layout.ui. (I0fa98, b/170475424)

Versión 1.0.0-alpha06

28 de octubre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha06 y androidx.compose.animation:animation-core:1.0.0-alpha06. La versión 1.0.0-alpha06 contiene estas confirmaciones.

Cambios en la API

  • Se habilitaron transiciones en ComposeTestRule y se quitó la opción que permitía habilitar el cursor intermitente desde ComposeTestRule. (If0de3)

Versión 1.0.0-alpha05

14 de octubre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha05 y androidx.compose.animation:animation-core:1.0.0-alpha05. La versión 1.0.0-alpha05 contiene estas confirmaciones.

Cambios en la API

  • Nueva interfaz de Animation y subclases: estas clases almacenan las condiciones de inicio y finalización de las animaciones. Por lo tanto, permiten que el valor y la velocidad se consulten solo durante el tiempo de reproducción. (Ie95bd, b/163329867)

Correcciones de errores

  • Se cambió el nombre de OnPositionedModifier a OnGloballyPositionedModifier y onPositioned() a onGloballyPositioned(). (I587e8, b/169083903)
  • Las API contentColor() y currentTextStyle() dejan de estar disponibles, y se reemplazan por AmbientContentColor y AmbientTextStyle, respectivamente. Puedes acceder al valor actual usando .current en la propiedad de los ambientes, como en cualquier otro ambiente. Este cambio se realizó para mantener la coherencia y evitar tener varias formas de lograr el mismo resultado. Además, se cambia el nombre de algunas propiedades de ambientes para describir mejor sus propósitos, de la siguiente manera:

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

Versión 1.0.0-alpha04

1 de octubre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha04 y androidx.compose.animation:animation-core:1.0.0-alpha04. La versión 1.0.0-alpha04 contiene estas confirmaciones.

Cambios en la API

  • Se agregaron las anotaciones rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled y textInputServiceFactory con @VisibleForTesting; se las convirtió en internas para la API y se ocultó su KDoc. (I554eb, b/168308412)

Correcciones de errores

  • Se actualizaron varias API de gráficos.
    • Se actualizaron las API de transformación de escalamiento y rotación a fin de consumir un solo parámetro de compensación para representar la coordenada dinámica, en lugar de parámetros flotantes separados para las coordenadas x/y en DrawScope y DrawTransform.
    • Se quitaron los métodos Rect.expandToInclude y Rect.join.
    • Se actualizó la documentación de Radius para indicar el óvalo además del elíptico.
    • Se agregó documentación para indicar que el constructor público para la clase de Radius intercalado no se debe llamar directamente, sino que se debe crear una instancia de los objetos Radius a través de sus constructores de funciones.
    • Se quitaron las API de RoundRect para consultar topRight, bottomRight, bottomCenter, etc.
    • Rect.shift dejó de estar disponible y se reemplazó por Rect.translate.
    • Se quitaron las API de RoundRect.grow y Rect.shrink.
    • Se cambió el nombre de RoundRect.outerRect a Rect.boundingRect.
    • Se quitaron los métodos RoundRect.middleRect/tallMiddleRect/wideMiddleRect y Rect.isStadium.
    • Se cambió el nombre de RoundRect.longestSide a RoundRect.maxDimension.
    • Se cambió el nombre de RoundRect.shortestSide a RoundRect.minDimension.
    • Se modificó RoundRect.center para que sea una propiedad en lugar de una función.
    • Se actualizó el constructor RoundRect para consumir propiedades de Radius en lugar de parámetros individuales para valores de radio x/y.
    • Se quitaron las API de tamaño que asumían que se trataba de un rectángulo con el origen en 0,0.
    • Se agregó una API destructiva a Radius.
    • Se migraron varias funciones de extensión de RoundRect para que sean propiedades.
    • (I8f5c7, b/168762961)
  • foundation.Box dejó de estar disponible. Usa foundation.layout.Box en su lugar. (Ie5950, b/167680279)
  • Se cambió el nombre de Stack a Box. La función Box anterior dejará de estar disponible y se usará la nueva función Box en compose.foundation.layout. El comportamiento de la nueva función Box es apilar elementos secundarios uno encima de otro cuando existen varios, a diferencia de la anterior, cuyo comportamiento era similar al de una columna. (I94893, b/167680279)
  • Los parámetros de decoración de Box dejaron de estar disponibles. Si deseas incluir decoraciones o relleno en tu cuadro, utiliza modificadores (Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
  • Evitamos las importaciones estáticas de contenido de alcances de diseño (p. ej., alignWithSiblings en RowScope). En su lugar, se debe usar la alternativa a un alcance explícito: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Versión 1.0.0-alpha03

16 de septiembre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha03 y androidx.compose.animation:animation-core:1.0.0-alpha03. La versión 1.0.0-alpha03 contiene estas confirmaciones.

Correcciones de errores

  • Se cambiaron de manera coherente los nombres de los usos de Gravity a Align o Alignment en las API de diseño. (I2421a, b/164077038)

Versión 1.0.0-alpha02

2 de septiembre de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha02 y androidx.compose.animation:animation-core:1.0.0-alpha02. La versión 1.0.0-alpha02 contiene estas confirmaciones.

Cambios en la API

  • Se agregó ManualFrameClock.hasAwaiters para ver si hay algo que espera un marco de ese reloj; runWithManualClock como un reemplazo para runBlocking cuando se ejecutan pruebas que necesitan un ManualFrameClock, y TestUiDispatcher.Main, que brinda un acceso fácil al despachador de IU principal en tus pruebas.

    Por ejemplo:

    @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)

Correcciones de errores

  • onPreCommit dejó de estar disponible. onCommit ahora tiene el comportamiento de onPrecommit.

    OnCommit y OnActive ahora se ejecutan en el mismo fotograma Choreographer que los cambios de composición incluidos, y no al inicio del siguiente fotograma Coreographer. (I70403)

Versión 1.0.0-alpha01

26 de agosto de 2020

Lanzamiento de androidx.compose.animation:animation:1.0.0-alpha01 y androidx.compose.animation:animation-core:1.0.0-alpha01. La versión 1.0.0-alpha01 contiene estas confirmaciones.

Versión 0.1.0-dev

Versión 0.1.0-dev17

19 de agosto de 2020

Lanzamiento de androidx.compose.animation:animation:0.1.0-dev17 y androidx.compose.animation:animation-core:0.1.0-dev17. La versión 0.1.0-dev17 contiene estas confirmaciones.

Nuevas funciones

Cambios en la API

  • Offset se convirtió en una clase intercalada. (Iaec70)
  • IntOffset ahora es una clase intercalada. (Iac0bf)
  • IntSize ahora es una clase intercalada. (I2bf42)
  • El objeto AnimatedVisibility que admite composición anima la aparición y la desaparición del contenido secundario.

    Se introdujeron EnterTransition y ExitTransition para trabajar con el objeto AnimatedVisibilty que admite composición a fin de proporcionar 3 tipos diferentes de animaciones de aparición y desaparición: atenuar, deslizar y expandir/reducir el contenido. Puedes combinar estos tipos de animaciones y así lograr un diseño más personalizado. (Idda11)

  • PxBounds dejó de estar disponible y se reemplazó por Rect. Se actualizaron todos los usos de PxBounds con rect y se agregaron la baja y reemplazo adecuados, con anotaciones para ayudar con la migración. (I37038, b/162627058)

Correcciones de errores

  • Se cambió el nombre de PlacementScope.placeAbsolute() a PlacementScope.place(), y el del PlacementScope.place() anterior a PlacementScope.placeRelative(). Como resultado, el método PlacementScope.place() ya no duplicará automáticamente la posición en contextos de derecha a izquierda. Si quieres que eso ocurra, usa PlacementScope.placeRelative() en su lugar. (I873ac, b/162916675)
  • El elemento state { ... } que admite composición dejó de estar disponible y se reemplazó por cualquier llamada explícita a remember { mutableStateOf(...) } por motivos de claridad. De esta forma, se reduce la plataforma general de la API, así como la cantidad de conceptos para la administración de estados, y se hace coincidir el patrón by mutableStateOf() con la delegación de propiedades de clase. (Ia5727)

Versión 0.1.0-dev16

5 de agosto de 2020

Lanzamiento de androidx.compose.animation:animation:0.1.0-dev16 y androidx.compose.animation:animation-core:0.1.0-dev16. La versión 0.1.0-dev16 contiene estas confirmaciones.

Cambios en la API

  • Ahora se puede acceder mediante Foo.VectorConverter a los convertidores vectoriales a fin de convertir unidades integradas. P. ej., Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc. (I3e273)
  • Brinda compatibilidad con el objeto de escucha final en Modifier.animateContentSize() de modo que, cuando finalice la animación de cambio de tamaño, este reciba una notificación que indique la finalización y el tamaño inicial/final de la animación. (I277b2)
  • Nuevo modificador animateContentSize que anima el cambio de tamaño de diseño de su modificador secundario. (Ieffdc)
  • Se agregó MonotonicFrameAnimationClock, que te permite usar un MonotonicFrameClock como un AnimationClockObservable para cerrar la brecha entre los relojes basados en las nuevas corrutinas y las API que aún usan los relojes basados en la devolución de llamada anterior.

    El equivalente MonotonicFrameClock de ManualAnimationClock ahora es ManualFrameClock. (I111c7, b/161247083)

Correcciones de errores

  • Se actualizaron las API correspondientes a la compatibilidad de orientación de derecha a izquierda. Se agregó LayoutDirectionAmbient, que puede usarse para leer y cambiar la dirección del diseño. Se quitaron Modifier.rtl y Modifier.ltr. (I080b3)
  • Se requiere que el tipo T se especifique de forma explícita para transitionDefinition. (I1aded)
  • Se acopló el paquete foundation.shape.corner a foundation.share. (I46491, b/161887429)
  • Modifier.plus dejó de estar disponible; en su lugar, usa Modifier.then. "Then" tiene un indicador de orden más fuerte, a la vez que prohíbe la escritura de Modifier.padding().background() + anotherModifier, lo que interrumpe la cadena y es más difícil de leer. (Iedd58, b/161529964)
  • Se cambió el nombre de Modifier.drawBackground a Modifier.background. (I13677)

Versión 0.1.0-dev15

22 de julio de 2020

Lanzamiento de androidx.compose.animation:animation:0.1.0-dev15 y androidx.compose.animation:animation-core:0.1.0-dev15. La versión 0.1.0-dev15 contiene estas confirmaciones.

Actualización de dependencias

  • Para usar la versión 0.1.0-dev15 de Compose, deberás actualizar tus dependencias de acuerdo con los nuevos fragmentos de código que se muestran más arriba en Cómo declarar dependencias.

Cambios en la API

  • Se modificó la API de Transition para mostrar un elemento TransitionState en lugar de pasar el objeto TransitionState a los elementos secundarios. Esto hace que la API sea más coherente con las API de animate(). (I24e38)
  • Se agregó el parámetro modificable para Crossfade. (I87cfe, b/159706180)
  • Usa AnimationSpec en lugar de AnimationBuilder en las API de nivel superior para aclarar el concepto de especificación de animación estática.
    • Mejora la DSL de transición mediante la eliminación del requisito lambda para crear AnimationSpecs, como la interpolación o la animación de resorte. En su lugar, toman parámetros de constructor en forma directa.
    • A fin de facilitar el uso general de AnimationSpec, establece constructores, en lugar de depender de compiladores.
    • Cambia la duración y el retraso de KeyFrames y Tween a Int. De esta manera, se eliminan las conversiones de tipos y la sobrecarga de métodos innecesarias (para admitir tanto Long como Int). (Ica0b4)
  • Se reemplazó el uso del elemento IntPx con Int. Se reemplazó el objeto IntPxPosition con IntOffset. Se reemplazó el elemento IntPxSize con IntSize. (Ib7b44)
  • A fin de consolidar las clases utilizadas para representar la información de tamaño, se estandarizó el uso de la clase Size en lugar de PxSize. Esto habilita las ventajas de una clase intercalada que permite empaquetar 2 valores de punto flotante para representar el ancho y la altura. (Ic0191)
  • A fin de consolidar las clases utilizadas para representar la información de posicionamiento, se estandarizó el uso de la clase Offset en lugar de PxPosition. Esto habilita las ventajas de una clase intercalada que permite empaquetar 2 valores de punto flotante para representar los desplazamientos x e y. (I3ad98)
  • Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (I086f4)
  • Se agregó compatibilidad con animate() para Dp, Px, Size, Position, Límites, PxPosition, PxSize, PxBounds, IntPx, IntPxSize, IntPxPosition, IntPxBounds y AnimationVector. (lb7518)
  • Crossfade ahora acepta el parámetro AnimationBuilder opcional para permitir la configuración de la animación. (I6d6e0)
  • Se reemplazaron todos los usos anulables de Color en la API con valores no anulables y se usa Color.Unset en lugar de valor nulo. (Iabaa7)
  • Se quitó la clase ValueHolder. Se reestructuraron las clases AnimatedValue y AnimatedFloat para que el campo de valor de animación sea abstracto a fin de que las subclases puedan ver la actualización del valor.
    • Se agregaron clases de modelos para AnimatedValue, AnimatedFloat, etc.
    • Se agregó un nuevo conjunto de API liviana de @Composable para realizar animaciones entre valores. (I79530)
  • Cambios rotundos en la API de ambients: Consulta el registro y la documentación de Ambient<T> para obtener más detalles. (I4c7ee, b/143769776)
  • Nuevo modo de repetición: revertir. Este modo revierte la iteración anterior a medida que se repite la animación en RepeatableSpec o VectorizedRepeatableSpec. (Ibe0f5)
  • Se agregaron las siguientes API a ManualAnimationClock: hasObservers: Boolean y dispatchOnSubscribe: Boolean de parámetro de constructor. (Iaa134)
  • Se agregaron API para obtener límites mínimos/máximos en AnimatedFloat. (Icd9cc)

Correcciones de errores

  • Se cambió el nombre de runOnIdleCompose a runOnIdle. (I83607)
  • Se cambió el nombre de varias API de prueba con el fin de que sean más intuitivas. Se cambió el nombre de todas las API findXYZ por el de onNodeXYZ. Se cambió el nombre de todas las API doXYZ por el de performXYZ. (I7f164)
  • Se introdujeron las API de animación sin estado de bajo nivel. (I63bf7)
  • La función Recompose que admite composición ya no es una abstracción útil. La mayor parte de la recomposición debería ocurrir como resultado de las asignaciones de MutableState. Para todo lo demás, se recomienda usar la función invalidate a fin de activar una recomposición del alcance actual. (Ifc992)
  • Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización a fin de depender solo de los tipos Dp y primitivos para los parámetros de píxeles. Se borró por completo la clase Px. (I3ff33)
  • Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (Id3434)
  • Los encadenados ahora pueden iniciarse con un valor nulo. (Iad6a4, b/155947711)
  • Se reemplazó el uso de la clase Px en varias clases de Compose como parte de un gran esfuerzo de refactorización para depender solo de los tipos Dp y primitivos para los parámetros de píxeles. (I19d02)
  • Se consolidaron las implementaciones de CanvasScope, por lo que ahora solo quedaron los elementos DrawScope y ContentDrawScope. Se cambió el nombre del objeto CanvasScope a DrawScope. Se actualizó DrawScope a fin de implementar la interfaz de Density y proporcionar LayoutDirection. Se borró la subclase DrawScope en ContentDrawScope. Se actualizaron Painter y PainterModifier de modo que ya no mantengan una propiedad RTL, ya que DrawScope la proporciona sin hacerlo manualmente. (I1798e)
  • Se actualizaron las API de Compose de nivel superior que exponen un lienzo para mostrar el objeto CanvasScope en su lugar. Esto elimina la necesidad de que los consumidores mantengan sus propios objetos Paint. Para los consumidores que aún necesitan acceso a un lienzo, pueden usar el método de extensión drawCanvas que proporciona una devolución de llamada a fin de emitir comandos de dibujo con el lienzo subyacente. (I80afd)
  • Se agregaron los parámetros verticalGravity y horizontalGravity a los elementos Row y Column, respectivamente. (I7dc5a)
  • Se cambió el nombre del módulo ui-text a ui-text-core. (I57dec)
  • Se mejoró la API de DrawModifier:
    • Se creó el alcance del receptor para draw() ContentDrawScope.
    • Se quitaron todos los parámetros de draw().
    • El objeto DrawScope tiene la misma interfaz que el elemento CanvasScope anterior.
    • ContentDrawScope tiene el método drawContent(). (Ibaced, b/152919067)
  • Los objetos runOnIdleCompose y runOnUiThread ahora son funciones globales en lugar de ser métodos en ComposeTestRule. (Icbe8f)
  • Los operadores delegados de la propiedad [Mutable]State se movieron a extensiones a fin de admitir optimizaciones delegadas de propiedad de Kotlin 1.4. Los emisores deben agregar importaciones para continuar usando by state { ... } o by mutableStateOf(...). (I5312c)
  • El objeto ColoredRect dejó de estar disponible. Usa Box(Modifier.preferredSize(width, height).drawBackground(color)) en su lugar. (I499fa, b/152753731)
  • Se reemplazaron el modificador y el operador por funciones de extensión (I225e4)
  • El elemento Center que admite composición dejó de estar disponible. Debe reemplazarse con el modificador LayoutSize.Fill + LayoutAlign.Center o con una de las funciones que admiten composición Box o Stack con los modificadores adecuados aplicados. (Idf5e0)
  • Se cambió el nombre de LayoutFlexible a LayoutWeight. Se cambió el nombre del parámetro estricto para completar. (If4738)
  • Se reemplazó la función Opacity que admite composición por el modificador drawOpacity. (I5fb62)
  • Las pruebas que usan AndroidCompositTestRule ahora proporcionan un reloj de animación en la raíz de la composición que se puede pausar, reanudar y avanzar manualmente. (Id54c5)
  • Compatibilidad con lectura de derecha a izquierda en el modificador LayoutPadding. (I9e8da)
  • Se combinaron Density y DensityScope en una sola interfaz. En lugar de ambientDensity(), ahora puedes usar DensityAmbient.current. En lugar de withDensity(density), usa with(density). (I11cb1)
  • Se agregaron métodos de copia a varios tipos de clases intercaladas, entre otras:
    • Desplazamiento
    • Tamaño
    • Radio
    • Movimiento
    • TransformOrigin
    • El método del objeto complementario Size.copy dejó de estar disponible para el método de copia de instancias. (Ife290, b/159905651)
  • Se trasladó el objeto androidx.compose.ViewComposer al elemento androidx.ui.node.UiComposer androidx.compose. Se quitó el parámetro Emittable. Era redundante con el objeto ComponentNode. Se quitó el elemento androidx.compose.ViewAdapters. Ya no es un caso práctico admitido. Compose.composeInto quedó obsoleto. En su lugar, usa los elementos setContent o setViewContent. El componente Compose.disposeComposition dejó de estar disponible. En su lugar, usa el método dispose en el Composition que muestra setContent. Se movió androidx.compose.Compose.subcomposeInto a androidx.ui.core.subcomposeInto. Se cambió el nombre de ComponentNode#emitInsertAt a ComponentNode#insertAt, el de ComponentNode#emitRemoveAt a ComponentNode#removeAt y el de ComponentNode#emitMode a ComponentNode#move. (Idef00)