支付寶小程序媒體組件 動畫·lottie

2020-09-18 11:11 更新

有關(guān) Lottie 的詳細信息請參見 Lottie 官方文檔Lottie 官方支持能力列表。

簡介

Lottie 是一個用于 Web 和 iOS 的移動庫,可使用 Bodymovin 解析以 json 格式導出的 Adobe After Effects 動畫,并將其本地呈現(xiàn)在移動設(shè)備上。以下為 Lottie 動畫庫適配小程序的方法。

使用限制

支付寶 10.1.35 版本及以上支持 Lottie 動畫。?

示例代碼

<!--.axml-->


<lottie


          assetsPath="{{item.assetsPath}}" 


          autoplay="{{item.autoplay}}" 


          id="{{item.id}}"


          djangoId="{{item.djangoId}}"


          path="{{item.path}}" 


          repeatCount="{{item.repeatCount}}"


          placeholder="{{item.placeholder}}"


          class="item">


  </lottie>
// .js Data Binding


{


        id : '2',


        desc : 'Django自動播放,低端設(shè)備降級',


        autoplay : true,


        djangoId:'https://gw.alipayobjects.com/os/basement_prod/1af0a9dc-110a-4a59-9084-a03d45686c8c.zip'


        placeholder:'https://gw.alipayobjects.com/mdn/rms_e345fe/afts/img/A*nu3GTaHqJ9AAAAAAAAAAAAAAARQnAQ


       524560995883_icon_S.png',


        optimize : 'true',


        repeatCount : -1


}  
/*.acss*/


.item{


  width: 700rpx;


  height: 400rpx;


  /* opacity: 0.5; */


}

屬性

屬性 類型 默認值 必填 描述 最低版本
autoplay Boolean false false 是否自動播放 -
path String false Lottie 資源地址。包含近端(包內(nèi)地址)和遠端(網(wǎng)絡(luò))的 JSON 文件地址。與 djangoId 二選一 -
speed float 1.0 false 播放速度。正數(shù)為正向播放,負數(shù)負向播放 -
repeatCount number 0 false 循環(huán)次數(shù)。如果是負數(shù)表示無限次如果是 0 表示不循環(huán),播放一次如果是 1 表示循環(huán)一次,播放兩次 10.1.80
autoReverse Boolean false false 是否自動回播 -
assetsPath String - false 資源地址。"/" 表明是小程序根目錄 10.1.50
placeholder String - true 兜底圖或者降級圖地址。支持本地資源,案例:'/image/lottie/lottie2_default.png'支持 http 的 cdn 地址、近端地址。小程序場景不支持 djangoId。 10.1.52
djangoId String - false Lottie 在線資源。遠端的 Zip 文件地址。Lottie 組件會執(zhí)行 MD5 校驗、解壓、獲取等過程,在過程中顯示 placeHolder 圖片。與 path 二選一 10.1.52
md5 String - false 在線資源的 md5 校驗。djangoId=https://b.zip 可以使用 b.zip 加密 獲取 md5 值md5="77c6c86fc89ba94cc0a9271b77ae77d2" 10.1.52
optimize Boolean false false 降級。降級是指如遇低端設(shè)備,Lottie 會降級展示為 placeHolder。?當 optimize 為 true ,并且傳入了 placeHolder 時,在低端設(shè)備上只會展示 placeHolder,不展示 Lottie。低端設(shè)備如下所示:iOS :小于等于 iPhone6PAndroid:內(nèi)存容量小于 3G 10.1.52

實例方法

方法名 描述 參數(shù) 默認值 最低版本
play 開始播放 - - -
stop 停止播放 - - -
pause 暫停 - - -
setSpeed 設(shè)置播放速度正數(shù)為正向播放,負數(shù)負向播放 value:numeric value 1 -
goToAndStop(value) goto 到 value 并停在該進度。示例:goToAndStop({value: 對應的值]}) value: numeric value.進度 [0.0~1.0] - -
goToAndPlay(value) goto 到 value 并從該進度開始播。示例:goToAndPlay({value: 對應的值]}) value: numeric value.進度 [0.0,1.0] - -
playFromMinToMaxProgress(min,max) 從最小到最大的進度區(qū)間進行播放。示例:playFromMinToMaxProgress({min:對應的值,max:對應的值}) min:最小進度max:最大進度百分比[0.0,1.0] - -
playFromMinToMaxFrame(min,max) 從最小到最大的 Frame 區(qū)間進行播放。示例:playFromMinToMaxFrame({min:對應的值,max:對應的值}) min:最小幀max:最大幀整數(shù)值 - -
downgradeToPlaceholder 當前 Lottie 視圖指定降級為展示 placeholder - - 10.1.52

監(jiān)聽事件

當實用方法調(diào)用 pause 和 stop 時,都會先后收到 animationCancel、animationEnd 兩個事件。

事件名 描述 參數(shù) 最低版本
dataReady 數(shù)據(jù)下載+視圖創(chuàng)建完成 - -
dataFailed 數(shù)據(jù)加載失敗 - -
animationStart 動畫開始 - -
animationEnd 動畫徹底結(jié)束 - -
animationRepeat 動畫一次重播結(jié)束 - 10.1.52
animationCancel 動畫取消 業(yè)務調(diào)用 Cancel 時回調(diào) -
dataLoadReady 參數(shù)化時,數(shù)據(jù)準備完成,等待業(yè)務傳入?yún)?shù)化值 - 10.1.72

功能介紹

支付寶小程序接入 Lottie 支持如下功能

功能 簡介
資源文件處理 Lottie 內(nèi)如何處理圖片、資源
播放能力 如何在沒有控制層的前提下有自定義播放能力

資源文件處理

圖片文件

UI 設(shè)計師提供的 Lottie 動畫可能會帶有目錄 images/,里面保存的是一些靜態(tài)圖片。

目前有三種解決方案,推薦前兩種:

  1. 整體壓縮為 Zip 文件,將 Zip 的路徑放在 djangoId 參數(shù)里。

  1. 將圖片資源轉(zhuǎn)成 base64 內(nèi)鏈在 JSON 文件里,這樣 JSON 路徑放在 path 參數(shù)里。

  1. 如果圖片資源和 JSON 文件是分離的,那么需要以下處理:動畫描述的 .json 文件里,對圖片資源是這樣定位的:

   {"id":"image_0","w":66,"h":89,"u":"images/","p":"img_0.png"}
  • w:寬度

  • h:高度

  • u:根目錄

  • p:具體文件

因此如果圖片資源統(tǒng)一放在一個單獨 URL 里,例如 http://xxx.xxx.com/images/img_0.png,那么需要將http://xxx.xxx.com/ 配置在 assetsPath 參數(shù)中。

Base64 support

Lottie 對資源的定義是

{"id":"image_0","w":66,"h":89,"u":"images/","p":"img_0.png"}

10.1.52 版本開始,p 節(jié)點支持 base64,當使用 base64 時,可以忽略 u 節(jié)點,例如:

"p":"data:image/png;base64,iVBORw0KGgoAAAANSU...."

注意:如果在支付寶 10.1.52、10.1.60 版本中使用 Base64 資源,需要在 JSON 文件中增加 assetsPath="/" 作為參數(shù),否則 iOS 上可能無法顯示。

注意事項

UI 設(shè)計師已完成的物料資源請先在 Lottie 平臺 上做一次檢測,保證物料包的內(nèi)容文件符合小程序規(guī)范。

?image?

修復兼容性問題

如果提示“使用插件版本 5.5.0+,客戶端必須也是 5.5.0+,iOS/android 舊版播放器會閃退”,必須重新用兼容性模式導出 JSON。

真機測試

請盡量分別使用不同系統(tǒng)下的不同機型進行測試,提高正確性。

選用兼容版本

支付寶版本為 10.1.68 或更低版本時,如果有 iOS 播放不完整、或者 Android 播放閃退的情況,請 UI 設(shè)計師使用 AE 插件導出時選用兼容版本。

說明:

?image?

檢查字體問題

支付寶版本 10.1.72 以下如果用到了 JSON 里面有 font-family="PingFang SC" 的字體,請檢查字體問題。因為 Android 沒有這個字體,在 Android 某些機器上(以下為部分閃退機型列表)會閃退。

  • MI 8
  • EML-AL00
  • OPPO R11
  • vivo Y66L
  • MIX 3
  • vivo NEX A
  • VOG-AL10
  • PBET00
  • V1829A
  • vivo X20A

注意事項

  1. 如果已經(jīng)加載了 Lottie 動畫,可選擇在開發(fā)者選項里面關(guān)閉動畫,關(guān)閉后需要重啟 App 或者重新加載才可以恢復 Lottie。

  1. iOS 系統(tǒng)在應用切到后臺的時候會自動移除動畫,在應用切回前臺時需要重新添加動畫。

  1. 小程序組件 ID 需應用內(nèi)保證唯一。不同的 Page 的同一個 Lottie 組件,頁面切換后組件未必會銷毀,因此不建議復用,例如:可翻頁的視頻頁面中的點贊按鈕。

  1. 文件壓縮。請在文件當前目錄直接進行壓縮,不要在外層目錄進行壓縮。當前不支持遍歷目錄尋找 JSON 文件,如果解壓后第一層未發(fā)現(xiàn) JSON 文件則會被認為不合法。

?image?

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號