Android Kotlin中Rive动画无法暂停,求play/stop方法使用指导
解决RiveAnimationView的pause/play/stop方法无效问题
核心原因
在onCreate中直接调用pause()时,Rive动画可能还未完成初始化加载,导致控制指令无法生效。必须等待动画资源完全加载后再执行状态控制。
解决方案代码
修改后的Kotlin代码
package com.example.basicriveapp import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import app.rive.runtime.kotlin.RiveAnimationView import app.rive.runtime.kotlin.RiveInitializer import app.rive.runtime.kotlin.core.Artboard import app.rive.runtime.kotlin.core.RiveListener import androidx.startup.AppInitializer class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) AppInitializer.getInstance(this) .initializeComponent(RiveInitializer::class.java) val animationView = findViewById<RiveAnimationView>(R.id.animationView) // 监听动画加载完成事件,确保初始化完成后再控制状态 animationView.registerListener(object : RiveListener { override fun onArtboardLoaded(artboard: Artboard) { // 动画加载完成后暂停 animationView.pause() } }) // 示例:添加按钮控制播放/暂停/停止 // playBtn.setOnClickListener { animationView.play() } // pauseBtn.setOnClickListener { animationView.pause() } // stopBtn.setOnClickListener { animationView.stop() } } }
精准控制动画的进阶用法
根据你的Rive动画类型(状态机/线性动画),可以指定名称来精准控制:
- 状态机(State Machine)驱动的动画
// 播放指定状态机 animationView.play(stateMachineName = "你的状态机名称") // 暂停指定状态机 animationView.pause(stateMachineName = "你的状态机名称") // 停止并重置指定状态机到初始状态 animationView.stop(stateMachineName = "你的状态机名称")
- 线性(Linear)动画
// 播放指定轨道动画 animationView.play(animationName = "你的动画轨道名称") // 暂停指定轨道动画 animationView.pause(animationName = "你的动画轨道名称") // 停止并重置指定轨道动画 animationView.stop(animationName = "你的动画轨道名称")
注意事项
- 确认Rive资源文件中的状态机/动画轨道名称与代码中指定的一致
- 所有动画控制方法必须在主线程调用(默认UI操作均在主线程,无需额外处理)
内容的提问来源于stack exchange,提问作者Jayesh Hadke
相关产品推荐
相关产品推荐

