You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android平台下如何为Lottie动画提供多张图片资源

在Android平台配置Lottie动画的多张图片资源

嗨,刚好我之前处理过类似的Lottie多图片配置需求,给你分享两种最常用的实现方式,轻松搞定你的问题~

方法一:默认资源路径匹配(最省心)

这个方法完全遵循Lottie JSON里定义的路径结构,不需要额外写代码:

  • 首先把你的data.json放到src/main/assets目录下,建议建个专门的子文件夹归类,比如assets/lottie/(没有assets文件夹就右键main目录新建一个)。
  • 然后根据JSON里assets字段的配置,创建对应的图片路径:JSON里每个资源的u是images/,所以要在assets/lottie/下再建一个images文件夹,把img_0.png和img1_.png放进去,最终路径就是assets/lottie/images/img_0.png和assets/lottie/images/img1_.png。
  • 最后在布局或代码里加载动画即可:

布局方式示例

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/lottie_animation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:lottie_fileName="lottie/data.json" <!-- 对应assets里的JSON路径 -->
    app:lottie_autoPlay="true"
    app:lottie_loop="true" />

代码方式示例

val lottieView = findViewById<LottieAnimationView>(R.id.lottie_animation)
lottieView.setAnimation("lottie/data.json")
lottieView.playAnimation()

这样Lottie会自动根据JSON里的路径去找到对应的图片,完美适配。

方法二:自定义AssetDelegate(灵活控制图片来源)

如果你的图片不想放在assets的指定路径里(比如想放到drawable目录),或者需要动态替换图片,就用这个方法:

  • 先把图片放到res/drawable目录下(注意文件名尽量用小写字母,避免适配问题)。
  • 给LottieAnimationView设置自定义的AssetDelegate,重写fetchBitmap方法,根据JSON里的图片ID返回对应的Bitmap:
val lottieView = findViewById<LottieAnimationView>(R.id.lottie_animation)
lottieView.setAnimation("lottie/data.json")

// 设置自定义AssetDelegate
lottieView.assetDelegate = object : LottieAssetDelegate() {
    override fun fetchBitmap(assetId: String): Bitmap? {
        // 这里的assetId对应JSON里assets数组里的id字段,比如你的"image_0"
        return when (assetId) {
            "image_0" -> BitmapFactory.decodeResource(resources, R.drawable.img_0)
            "image_1" -> BitmapFactory.decodeResource(resources, R.drawable.img1_)
            else -> super.fetchBitmap(assetId) // 找不到时用默认逻辑
        }
    }
}

lottieView.playAnimation()

几个关键注意事项

  • 文件名大小写敏感:Android的assets目录是区分大小写的,JSON里的图片文件名要和实际文件完全一致,比如JSON里写的是img_0.png,实际文件不能写成Img_0.png。
  • 图片尺寸匹配:尽量保证图片的宽高和JSON里assets字段定义的w、h一致,避免动画播放时图片拉伸变形。
  • 依赖版本:确保你的Lottie依赖是最新稳定版,比如在Module的build.gradle里:
implementation "com.airbnb.android:lottie:6.4.0" // 版本号可根据实际情况调整

内容的提问来源于stack exchange,提问作者eyeballs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:18:43