PAG是來自騰訊的一套完整的動(dòng)畫工作流解決方案,助力于將 AE 動(dòng)畫方便快捷的應(yīng)用于各平臺(tái)終端。PAG 的流程圖下圖所示,設(shè)計(jì)師在 AE 上設(shè)計(jì)出動(dòng)畫后击你,可以通過導(dǎo)出插件導(dǎo)出 pag 文件玉组,同時(shí) PAG 提供了桌面端預(yù)覽工具,支持實(shí)時(shí)預(yù)覽效果丁侄,在確認(rèn)效果后惯雳,通過運(yùn)行配置上線,各平臺(tái)終端可以通過 PAG SDK 加載渲染 PAG 動(dòng)畫鸿摇。
PAG官網(wǎng):https://pag.art/en/
PAG 特點(diǎn)及優(yōu)勢(shì) :
● 開源項(xiàng)目:無需擔(dān)心團(tuán)隊(duì)維護(hù)問題石景。
● 文件更小:PAG采用針對(duì) AE 時(shí)間軸屬性設(shè)計(jì)的二進(jìn)制文件編碼器拙吉,能夠使用動(dòng)態(tài)比特位緊湊存儲(chǔ)潮孽,冗余信息極少,文件體積最小筷黔,解碼速度最快往史,且支持單文件集成圖片和音頻等外部資源。
● 全 AE 特性支持:在純矢量的導(dǎo)出模式下佛舱,無論是哪種實(shí)現(xiàn)方案椎例,在眾多的 AE 特性面前,都只支持將有限的 AE特性導(dǎo)出渲染请祖,PAG 方案提供了 BMP 預(yù)合成的解決方案订歪,支持將特定圖層截圖導(dǎo)出成透明視頻,實(shí)現(xiàn)了對(duì)于所有 AE 特性導(dǎo)出的支持肆捕。
● 運(yùn)行時(shí)編輯:PAG 不僅僅支持文本圖層的文本編輯刷晋、圖片圖層的占位圖替換,還支持圖層級(jí)別的增加慎陵、刪除及更改渲染位置眼虱,實(shí)現(xiàn)原子素材的自由組合,典型的應(yīng)用場景就是視頻模版和游戲戰(zhàn)報(bào)席纽,一個(gè)模版中由多個(gè) pag 有機(jī)組合在一起蒙幻。
● 渲染架構(gòu):相對(duì)于 Lottie 、SVGA 依賴于平臺(tái)端相關(guān)的渲染接口胆筒,PAG 使用了跨平臺(tái)一致的 C++ 架構(gòu),平臺(tái)層面僅僅提供渲染環(huán)境诈豌,渲染的主體位于 C++ 層仆救,可以實(shí)現(xiàn)跨平臺(tái)的渲染一致性。
● 支持的平臺(tái)更多:相比 Lottie 支持 Android矫渔、iOS彤蔽、Web 和 macOS, SVGA 支持 Android庙洼、iOS顿痪、Web镊辕,PAG 實(shí)現(xiàn)了 Android、iOS蚁袭、Web征懈、macOS、Windows揩悄、Linux 和 微信小程序卖哎,支持的平臺(tái)更多。
各常用文件動(dòng)畫特性:
使用步驟
- 引入依賴
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表示播放的次數(shù)蹬挺,-1表示循環(huán)维贺,1表示播放一次。默認(rèn)load但是不調(diào)用play巴帮,只會(huì)加載出第一幀圖片溯泣。
private fun loadPageAsset(pagView: PAGView, pagRes: String, repeatCount: Int): PAGView {
return pagView.apply {
composition = PAGFile.Load(assets, pagRes)
setRepeatCount(repeatCount)
}
}
- 播放或者停止
pagView.play()
- 動(dòng)畫停止:
pagView.stop()
pagView.progress = 0.0 //回到動(dòng)畫的第一幀,處理停止停留在隨意一幀
最后晰韵,騰訊系產(chǎn)品都在用发乔,他們都說好: