news 2026/4/23 19:20:51

Compose笔记(六十四)--LottieAnimation

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Compose笔记(六十四)--LottieAnimation

这一节主要了解一下Compose中的LottieAnimation,在Jetpack Compose中,LottieAnimation是一个用于渲染Lottie动画的Composable组件。它由Lottie-Android库提供支持,允许开发者在Android应用中轻松展示复杂的动画效果.简单总结如下:

API:
composition:Lottie 动画的解析结果,包含动画数据
progress:控制动画进度的函数,返回0f(开始)到1f(结束)之间的值。
outlineMasksAndMattes:是否对蒙版和遮罩启用轮廓描边
applyOpacityToLayers:是否将透明度应用到整个图层
enableMergePaths:是否启用After Effects的“合并路径”功能。
renderMode:选择渲染模式,影响动画绘制方式。
dynamicProperties:动态修改动画属性(如颜色、透明度)的回调接口。
asyncUpdates:控制动画帧更新的线程策略。

栗子:

implementation("com.airbnb.android:lottie-compose:6.4.0")
import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.rememberLottieComposition import com.example.composedemo0802.R @Composable fun LottieDemo() { val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.animation)) LottieAnimation( composition = composition, modifier = Modifier.size(200.dp) ) }
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.size import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.dp import com.airbnb.lottie.RenderMode import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieClipSpec import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.rememberLottieAnimatable import com.airbnb.lottie.compose.rememberLottieComposition import com.example.composedemo0802.R @Composable fun LottieDemo() { val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.animation)) val animatable = rememberLottieAnimatable() var isPlaying by remember { mutableStateOf(true) } LaunchedEffect(isPlaying) { if (isPlaying) { animatable.animate( composition = composition!!, clipSpec = LottieClipSpec.Progress(0f, 1f), speed = 1.5f, iterations = LottieConstants.IterateForever ) } } Column( modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { LottieAnimation( composition = composition, progress = { animatable.value }, modifier = Modifier.size(300.dp), renderMode = RenderMode.HARDWARE, contentScale = ContentScale.Crop ) Spacer(modifier = Modifier.height(16.dp)) Button(onClick = { isPlaying = !isPlaying }) { Text(if (isPlaying) "Pause" else "Play") } } }

注意:
1 优先使用本地raw资源(而非assets或网络),加载更快更稳定。
2 避免在LottieAnimation内部频繁重建composition,用rememberLottieComposition缓存。
3 不要在列表(LazyColumn)中大量使用高帧率Lottie,可能影响滚动性能

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 13:55:40

YOLO模型支持Logstash日志处理管道

YOLO模型支持Logstash日志处理管道 在智能制造与边缘AI部署日益深入的今天,一个常被忽视的问题浮出水面:我们能让AI“看见”世界,却难以让系统真正“记住”它所见的内容。 摄像头每秒生成成百上千帧画面,YOLO等目标检测模型能实时…

作者头像 李华
网站建设 2026/4/23 17:45:32

YOLOv9-Slim轻量版发布:移动端推理速度再提升

YOLOv9-Slim轻量版发布:移动端推理速度再提升 在智能手机、无人机和工业相机日益普及的今天,实时目标检测已不再是云端服务器的专属能力。越来越多的应用场景要求设备“看得懂”世界——从自动避障的扫地机器人,到产线上毫秒级响应的异物识别…

作者头像 李华
网站建设 2026/4/23 6:33:08

YOLO目标检测支持STOMP协议WebSocket消息

YOLO目标检测与STOMP over WebSocket的融合实践 在现代智能视觉系统中,一个日益突出的挑战是:如何将强大的感知能力真正“接入”到业务流程之中。许多项目并非败于模型精度不足,而是卡在了从“看得见”到“传得快、接得住”的最后一公里——…

作者头像 李华
网站建设 2026/4/23 13:09:13

基于SpringBoot的宠物成长监管系统的设计与实现(源码+文档+部署+讲解)

本课题聚焦宠物主人对宠物成长全周期监管的需求痛点,设计并实现一款基于SpringBoot框架的宠物成长监管系统,解决传统宠物养护中成长记录零散、健康数据缺失、养护知识匮乏、就医预约不便等问题,搭建一体化宠物成长数字化监管平台。系统采用前…

作者头像 李华
网站建设 2026/4/23 14:40:41

YOLO模型训练支持Multi-scale Training提升鲁棒性

YOLO模型训练支持Multi-scale Training提升鲁棒性 在工业质检线上,一台摄像头需要同时识别远处模糊的微小划痕和近处清晰的大型部件;在高速公路上,自动驾驶系统必须稳定追踪从几百米外驶来的车辆,直到它逼近到眼前。这些场景背后隐…

作者头像 李华