PAG是来自腾讯的一套完整的动画工作流解决方案,助力于将 AE 动画方便快捷的应用于各平台终端。PAG 的流程图下图所示,设计师在 AE 上设计出动画后,可以通过导出插件导出 pag 文件,同时 PAG 提供了桌面端预览工具,支持实时预览效果,在确认效果后,通过运行配置上线,各平台终端可以通过 PAG SDK 加载渲染 PAG 动画。
PAG官网:https://pag.art/en/
PAG 特点及优势 :
● 开源项目:无需担心团队维护问题。
● 文件更小:PAG采用针对 AE 时间轴属性设计的二进制文件编码器,能够使用动态比特位紧凑存储,冗余信息极少,文件体积最小,解码速度最快,且支持单文件集成图片和音频等外部资源。
● 全 AE 特性支持:在纯矢量的导出模式下,无论是哪种实现方案,在众多的 AE 特性面前,都只支持将有限的 AE特性导出渲染,PAG 方案提供了 BMP 预合成的解决方案,支持将特定图层截图导出成透明视频,实现了对于所有 AE 特性导出的支持。
● 运行时编辑:PAG 不仅仅支持文本图层的文本编辑、图片图层的占位图替换,还支持图层级别的增加、删除及更改渲染位置,实现原子素材的自由组合,典型的应用场景就是视频模版和游戏战报,一个模版中由多个 pag 有机组合在一起。
● 渲染架构:相对于 Lottie 、SVGA 依赖于平台端相关的渲染接口,PAG 使用了跨平台一致的 C++ 架构,平台层面仅仅提供渲染环境,渲染的主体位于 C++ 层,可以实现跨平台的渲染一致性。
● 支持的平台更多:相比 Lottie 支持 Android、iOS、Web 和 macOS, SVGA 支持 Android、iOS、Web,PAG 实现了 Android、iOS、Web、macOS、Windows、Linux 和 微信小程序,支持的平台更多。
各常用文件动画特性:
使用步骤
- 引入依赖
implementation "com.tencent.tav:libpag:4.2.41"
- 使用PagView,这里使用的是PAGView,也可以使用PAGImageView
<org.libpag.PAGView
android:id="@+id/view_pag"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="40dp" />
- 加载pag资源文件:
pag资源文件可以放入到assets目录下。setRepeatCount表示播放的次数,-1表示循环,1表示播放一次。默认load但是不调用play,只会加载出第一帧图片。
private fun loadPageAsset(pagView: PAGView, pagRes: String, repeatCount: Int): PAGView {
return pagView.apply {
composition = PAGFile.Load(assets, pagRes)
setRepeatCount(repeatCount)
}
}
- 播放或者停止
pagView.play()
- 动画停止:
pagView.stop()
pagView.progress = 0.0 //回到动画的第一帧,处理停止停留在随意一帧
最后,腾讯系产品都在用,他们都说好: