一句话:PAGView 是什么?
PAGView = 用来播放腾讯 PAG 动效文件的专用视图(.pag 文件)
就是:
- 设计师用 AE 做动画 → 导出 .pag 文件
- 安卓用 PAGView 播放
- 比 Lottie 更强、更清晰、占用更小
一、先加依赖(必须)
// PAG 动效库(腾讯官方)
implementation "com.tencent.tav:libpag:4.4.35"
二、两种使用方式(XML / Kotlin 代码)
1)XML 布局里用(最常用)
<!-- PAG 动画播放器 -->
<org.libpag.PAGView
android:id="@+id/pag_view"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"/>
三、最核心:播放 pag 文件(3 行代码搞定)
把 xxx.pag 文件放到 src/main/assets/ 目录下
// 1. 从 assets 加载 pag 文件(必须这样写,否则加载不到)
val fileName = "anim_success.pag"
val pagFile = PAGFile.Load(this.getAssets(), fileName)
// 2. 设置给 PAGView
pagView.setComposition(pagFile)
// 3. 播放
pagView.play()
✅ 搞定!动画直接播放!
四、常用功能(你项目 100% 会用到)
1. 循环播放
pagView.setLoopCount(-1) // -1 = 无限循环
pagView.setLoopCount(3) // 播放 3 次
2. 监听播放结束
pagView.addListener(object : PAGView.Listener {
override fun onAnimationEnd() {
// 动画播放完毕
}
})
3. 暂停 / 继续 / 停止
pagView.pause() // 暂停
pagView.play() // 继续
pagView.stop() // 停止
pagView.isPlaying // 是否正在播放
repeatCount = 你想【额外重复】几次
最终播放次数 = repeatCount + 1
所以:
- 0 → 0 次额外重复 → 总共播 1 次
- 1 → 额外重复 1 次 → 总共播 2 次
- -1 → 无限循环
//额外重复
pagView.setRepeatCount(0) // 播1次就停(默认)
pagView.setRepeatCount(3) // 播4次停
pagView.setRepeatCount(-1) // 无限循环
4. 设置播放速度
pagView.setSpeed(1.0f) // 正常
pagView.setSpeed(0.5f) // 慢动作
pagView.setSpeed(2.0f) // 2倍速
5. 释放资源(必须写,防止内存泄漏)
override fun onDestroy() {
super.onDestroy()
pagView.free()
}
五、完整可运行代码(Activity 里直接用)
class PagDemoActivity : AppCompatActivity() {
private lateinit var pagView: PAGView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_pag_demo)
pagView = findViewById(R.id.pag_view)
// 加载 pag 动画
val fileName = "anim_success.pag"
val pagFile = PAGFile.Load(this.getAssets(), fileName)
pagView.setComposition(pagFile)
// 无限循环
pagView.setLoopCount(-1)
// 播放
pagView.play()
}
override fun onDestroy() {
super.onDestroy()
pagView.free() // 释放
}
}
六、超通俗总结(必记)
- PAGView = 播放 .pag 动画的控件
- 放到 assets 目录
- load → set → play
- 循环、监听、暂停、释放
七、你什么时候用 PAGView?
- 启动动画
- 加载动画
- 成功 / 失败动效
- 礼物动效
- 聊天动效
- 所有高端 AE 动画