news 2026/5/1 9:17:00

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/5/1 7:09:57

计算机毕业设计springboot旅游景点管理系统 基于SpringBoot的智慧文旅综合服务平台 融合SpringBoot的景区一站式预约与信息管理系统

计算机毕业设计springboot旅游景点管理系统2fj40iq6 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当“来一场说走就走的旅行”从口号变成日常,景区却还在用Excel电…

作者头像 李华
网站建设 2026/4/19 23:56:16

YOLO模型训练支持DataParallel多GPU并行(单机)

YOLO模型训练支持DataParallel多GPU并行(单机) 在工业视觉系统日益智能化的今天,目标检测模型的迭代速度直接决定了产品落地的节奏。YOLO系列作为实时检测领域的“标配”,其训练效率问题愈发突出——当使用COCO这样的大规模数据集…

作者头像 李华
网站建设 2026/5/1 8:33:39

YOLO模型训练支持ReduceLROnPlateau动态调整学习率

YOLO模型训练支持ReduceLROnPlateau动态调整学习率 在工业视觉系统日益复杂的今天,一个常见的挑战是:如何让YOLO这类高速目标检测模型在有限的训练周期内,既快速收敛又不牺牲最终精度?许多工程师都经历过这样的场景——训练前期损…

作者头像 李华
网站建设 2026/5/1 7:09:50

多线程编程

多线程编程的核心是 “并发”,但并发的背后必然绕不开 “同步”—— 如果多个线程争抢共享资源,轻则数据错乱,重则程序卡死。POSIX 线程库(pthread)作为 Linux 下多线程开发的标准,提供了三大核心同步原语&…

作者头像 李华
网站建设 2026/4/29 14:29:13

YOLO在森林防火预警中的应用:烟雾火焰早期识别

YOLO在森林防火预警中的应用:烟雾火焰早期识别 当瞭望塔上的摄像头突然捕捉到林区边缘的一缕灰白色飘动,系统在0.7秒内完成分析——不是晨雾,不是飞鸟,而是初起的山火烟雾。报警信号瞬间通过5G网络上传至指挥中心,无人…

作者头像 李华