核心動畫系列(四): Lottie 的使用

Github 上有很多前輩分享了優(yōu)秀的動畫, 基本開發(fā)中需要的動畫在其中都能找到. 如果碰到特別棘手的需求, 沒有現(xiàn)成的可以參考, 我們可以借助 Lottie 這個框架快速實現(xiàn)動畫.

Lottie 是 Airbnb 開源的一套動畫庫, 我們可以使用 Adobe After Effects (俗稱AE) 設計出動畫, 使用 Lottie提供的 Bodymovin 插件將設計好的動畫導出成 JSON 格式, 就可以直接運用在 iOS, Android, WebReact Native之上, 無需其他額外操作.

我把一些可以利用的資源寫在前面.

鏈接 說明
lottie 官網(wǎng) lottie 官網(wǎng)
lottie-android Android 應用
lottie-ios iOS 應用
lottie-react-native RN 應用
lottie-web Web 應用
AE 破解版 AE 破解版下載鏈接, 也可以在這里下載
Bodymovin 插件 AE插件, 用于將 aep 文件導出為 json 文件
AE 插件安裝器 親測, 好用
lottie 動畫社區(qū) lottie 動畫庫, 有很多輪子可供下載編輯
json文件格式 利用 Bodymovin 插件將動畫從 AE 中導出的 JSON文件

lottie 使用

lottie-ios 很容易找到演示的Demo. 我在 lottiefiles 上找了一個material-loading 加載動畫. 通過下載, 我們可以直接獲取到 json 文件.

注意

這里有一個 preview 功能, 我們能在這里上傳我們做的 json 文件來預覽動畫.

播放動畫

  1. 利用 cocoapods 加載框架
pod 'lottie-ios'
  1. 播放動畫

將 json 文件導入在工程中, 利用以下代碼運行

func testMaterialLoad() {
    // 創(chuàng)建動畫視圖
    let loadAnimation = LOTAnimationView(name: "data2")
    loadAnimation.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
    // 添加動畫視圖
    view.addSubview(loadAnimation)
    
    // 播放
    loadAnimation.play(fromProgress: 0, toProgress: 0.5, withCompletion: nil)
    //        loadAnimation.play { (result) in
    //            print("result==>", result)
    //        }
    
    // 是否循環(huán), 默認NO
    loadAnimation.loopAnimation = true
    
    // 默認 true
    loadAnimation.cacheEnable = true
    
    // 暫停動畫
//  loadAnimation.pause()
    
    // 停止動畫
//  loadAnimation.stop()
}

效果如下


注意

    1. lottie 通過 LOTAnimationView 加載動畫, LOTAnimationView 繼承自 LOTView. 在 iOS 平臺, LOTView 是 UIView 的別名, 在 Mac 平臺, 它是 NSView.
    1. lottie 渲染原理


    1. json 文件結構
第一層
property description
v Bodymovin 版本號
fr frame rate, 幀率
ip in point, 時間標尺的入點(起點). 設置動畫的初始幀
op out point, 時間標尺的出點(終點). 設置動畫的最終幀
w composition width, 合成寬度
h composition height, 合成高度
nm 組件名字
assets 資源信息
layers 圖層信息
ddd 3d layer 標志

其中, 動畫時間 = (op - ip) / fr, 幀率為每秒顯示的幀數(shù).

第二層 assets
property description
id 圖片id
w 圖片寬度
h 圖片高度
u 圖片路徑
p 圖片名字
第二層 layers
property description
ty layer 的類型
ks transform properties
ao Auto-Orient, 是否沿路徑AE屬性自動定向, 0否1是
bm blend mode, 混合模式
ddd 3d layer 標志
ind AE中的 layer index
cl class, 在 SVG / HTML 渲染器上用作html類的解析圖層名稱
ln layer HTML ID, 在 SVG / HTML 渲染器上用作html id 的解析圖層名稱
ip in point, 圖層的入點, 設置圖層的初始幀
op out point, 圖層的出點, 設置圖層的最終幀
st start time, 起始時間
nm AE 圖層的名稱
hasMask 表示一個圖層是否有 mask
maskProperties masks 列表
ef effects 列表
sr stretch, 圖層時間拉伸
parent 父圖層 id
refId id指向'ass??ets'對象上定義的圖像
  • layer 的類型
    • 0 preComp 層, 預合成層
    • 1 solid 層, 固體層
    • 2 image 層, 圖片層
    • 3 null 層, 空層
    • 4 shape 層, 形狀層
    • 5 text 層, 文本層
第二層 layers -> ks
property description
a anchor pointer, 錨點
p position
s scale
r rotation
o opacity
px position x
py position y
第二層 layers -> shape -> it

這里展示了shape layer 的所有功能.

  1. sh, shape, 圖形路徑
  2. rc, rect, 矩形路徑
  3. el, ellipse, 橢圓路徑
  4. sr, star
  5. fl, fill, 圖形填充
  6. gf, gFill
  7. gs, gStroke,
  8. st, stroke, 圖形描邊
  9. mm, merge, 圖形合并
  10. tm, trim, 裁剪路徑
  11. gr, group, 圖形組合
  12. rd, roundedCorners, 圓角路徑

你可以在 lottie-web/docs/json/layers/shape.json 找到對應內(nèi)容. 方便查找

{
    "$ref": "#/shapes/shape",
    "value": "sh"
},
{
    "$ref": "#/shapes/rect",
    "value": "rc"
},
{
    "$ref": "#/shapes/ellipse",
    "value": "el"
},
{
    "$ref": "#/shapes/star",
    "value": "sr"
},
{
    "$ref": "#/shapes/fill",
    "value": "fl"
},
{
    "$ref": "#/shapes/gFill",
    "value": "gf"
},
{
    "$ref": "#/shapes/gStroke",
    "value": "gs"
},
{
    "$ref": "#/shapes/stroke",
    "value": "st"
},
{
    "$ref": "#/shapes/merge",
    "value": "mm"
},
{
    "$ref": "#/shapes/trim",
    "value": "tm"
},
{
    "$ref": "#/shapes/group",
    "value": "gr"
},
{
    "$ref": "#/shapes/roundedCorners",
    "value": "rd"
}
    1. 生成 json 文件

大致過程如下


  1. 下載完 AE 后, 我們需要安裝 Bodymovin 插件, 這是一個 zxp 文件, 我們可以通過第三方 AE 插件安裝器.
    這個插件能自動識別電腦中的 AE. 自動安裝 Bodymovin 插件.
image.png
  1. 安裝完插件后, 我們需要啟用這個插件, 我用的是 AE CC 2018 中文界面.


    image.png

常規(guī) 里面, 勾選 允許腳本寫入文件, 訪問網(wǎng)絡

  1. lottie 動畫社區(qū) 我們可以找到別人上傳的 aep 文件進行編輯, 或者在線編輯.

在線編輯能修改一些簡單的元素.


在 AE 中編輯如下


下載完 aep 文件后, 在 AE 頂部的工具欄, 文件 -> 打開項目 -> (找到 aep 文件, 并打開), 通過右上的預覽功能, 打開播放按鈕即可預覽.

  1. 利用 Bodymovin 插件將 aep 文件導出為 json 文件.

如果你已經(jīng)成功安裝插件, 你是可以在擴展中看到新裝的插件. 點擊此插件, 即可出現(xiàn)工具欄.


選中目標文件, 確定導出路徑即可.


導出成功


image.png

以上如果還是出現(xiàn)問題, 可以參考官方步驟

參考

bodymovin導出動畫json結果分析

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容