Lottie 中文文档 下载 App

LottieAnimationView 使用——加载、播放、控制

三种加载方式

val animationView = findViewById<LottieAnimationView>(R.id.animation_view)

// 方式一:从 raw 资源
animationView.setAnimation(R.raw.loading)

// 方式二:从 assets 文件
animationView.setAnimation("loading.json")

// 方式三:远程 URL
animationView.setAnimationFromUrl("你的 CDN 托管地址")

播放控制

// 播放
animationView.playAnimation()

// 暂停
animationView.pauseAnimation()

// 恢复
animationView.resumeAnimation()

// 停止并回到起始帧
animationView.cancelAnimation()

// 跳到指定帧并停止
animationView.frame = 30f

// 跳到指定进度(0~1)
animationView.progress = 0.5f

// 设置循环次数
animationView.repeatCount = LottieDrawable.INFINITE // 或具体次数
animationView.repeatMode = LottieDrawable.RESTART // 或 REVERSE

// 设置倍速
animationView.speed = 1.5f // 正常 1.0f,半速 0.5f

回调监听

animationView.addAnimatorListener(object : Animator.AnimatorListener {
    override fun onAnimationStart(animation: Animator) {}
    override fun onAnimationEnd(animation: Animator) {
        // 单次播放完成
    }
    override fun onAnimationCancel(animation: Animator) {}
    override fun onAnimationRepeat(animation: Animator) {
        // 每次循环结束
    }
})

// 或者用简化的扩展方法(v3.0+)
animationView.doOnAnimationEnd {
    // ...
}

LottieDrawable

LottieDrawable 和 LottieAnimationView 是同一套底层,但更灵活——可以放到任何 View 的 background 或 foreground,或者作为 ImageView 的 drawable:

val drawable = LottieDrawable()
drawable.composition = LottieCompositionFactory.fromRawResSync(this, R.raw.loading).value
drawable.playAnimation()

// 设置为任意 View 的背景
myView.background = drawable

生命周期注意

LottieAnimationView 是一个 View,会随 Activity / Fragment 生命周期自动处理。但如果你在自定义 View 或 RecyclerView 的 ViewHolder 里使用:

override fun onPause() {
    super.onPause()
    animationView.cancelAnimation() // 或 pauseAnimation()
}