android - 如何在不同的重组中保持 Lottie 动画进度
问题描述
我正在尝试使用 Lottie compose 在 compose 中播放动画。但是对于所有重组,动画都是从一开始就开始的。我希望保持当前播放并且不为每个重组重新启动动画。这是我当前的代码
@Composable
fun Loader() {
val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.main))
LottieAnimation(composition)
}
解决方案
您需要在可组合功能之外保存动画进度,这将被重新组合
@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)
...
}
推荐阅读
- azure-active-directory - 在另一个 Azure 租户中注册的团队中上传自定义应用
- rest - 按创建日期转移条带过滤器
- docker - 如何通过 Jenkinsfile 管道使用 Git Commit Hash 自动标记 Docker 映像
- azure - Application Insights Down - 对应用程序的影响
- reactjs - 如何在反应返回()中访问对象
- ms-word - 在 Office 365 Online 中创建的 docx 文件在导出图像时与 pandoc 的行为不同
- c++ - 确定与其他 2D 矢量相比,2D 矢量面向哪个方向
- javascript - 如何将元素推送到 d3.json 对象之外的数组中?
- json - ElasticSearch 文档中的数组计数
- python - Python 2.7 将特殊字符转换为 utf-8 字节