【问题标题】:How to maintain Lottie animation progress across different recompositions如何在不同的重组中保持 Lottie 动画进度
【发布时间】:2021-09-23 21:11:17
【问题描述】:
我正在尝试使用 Lottie compose 在 compose 中播放动画。但是对于所有重组,动画都是从一开始就开始的。我希望保持当前播放并且不为每个重组重新启动动画。这是我当前的代码
@Composable
fun Loader() {
val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.main))
LottieAnimation(composition)
}
【问题讨论】:
标签:
android
android-jetpack-compose
lottie
【解决方案1】:
您需要在可组合函数之外保存动画进度,这将被重新组合
@Composable
fun ParentComposable() {
val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.main))
val animationProgress by animateLottieCompositionAsState(composition = composition)
ChildComposable(animationProgress = animationProgress, composition = composition)
}
@Composable
fun ChildComposable(animationProgress: Float, composition: LottieComposition?) {
...
Loader(progress = animationProgress, composition = composition)
...
}
@Composable
fun Loader(animationProgress: Float, composition: LottieComposition?) {
...
LottieAnimation(composition, animationProgress)
...
}