Jetpack Compose 重组后运行动画

Rit*_*CZE 2 android kotlin android-jetpack android-jetpack-compose

重组(屏幕或某些可组合项)完成后,有什么方法可以运行动画吗?当动画运行的同时有重组时,动画的表现非常差(一点也不流畅)。我尝试delay延迟动画一段时间,但我认为这不是一个好主意。必须有更好的方法来做到这一点。

Thr*_*ian 6

请提供可生产的示例,这样您就不需要再次询问。合成完成后,您可以通过内部Animatable调用来运行动画。您可以选择带有 lambda 的修饰符对应项,而不是使用 Modifier.offset()、Modifier.background() 创建重组。animatable.animateTo()LaunchedEffect

https://developer.android.com/jetpack/compose/performance/bestpractices#defer-reads

例如,您可以在Draw phase帧内完成合成后对 Alpha 进行动画处理,而无需触发重新合成

val animatable = remember {
    Animatable(0f)
}

LaunchedEffect(key1 = Unit) {
    animatable.animateTo(1f)
}

Box(
    Modifier
        .size(100.dp)
        .drawBehind {
            drawRect(Color.Red.copy(alpha = animatable.value))
        }
)
Run Code Online (Sandbox Code Playgroud)

/sf/answers/5129224201/