codecamp

支付宝小程序媒体组件 动画·lottie

有关 Lottie 的详细信息请参见 Lottie 官方文档Lottie 官方支持能力列表

简介

Lottie 是一个用于 Web 和 iOS 的移动库,可使用 Bodymovin 解析以 json 格式导出的 Adobe After Effects 动画,并将其本地呈现在移动设备上。以下为 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自动播放,低端设备降级',


        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 资源地址。包含近端(包内地址)和远端(网络)的 JSON 文件地址。与 djangoId 二选一 -
speed float 1.0 false 播放速度。正数为正向播放,负数负向播放 -
repeatCount number 0 false 循环次数。如果是负数表示无限次如果是 0 表示不循环,播放一次如果是 1 表示循环一次,播放两次 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 组件会执行 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 降级。降级是指如遇低端设备,Lottie 会降级展示为 placeHolder。当 optimize 为 true ,并且传入了 placeHolder 时,在低端设备上只会展示 placeHolder,不展示 Lottie。低端设备如下所示:iOS :小于等于 iPhone6PAndroid:内存容量小于 3G 10.1.52

实例方法

方法名 描述 参数 默认值 最低版本
play 开始播放 - - -
stop 停止播放 - - -
pause 暂停 - - -
setSpeed 设置播放速度正数为正向播放,负数负向播放 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) 从最小到最大的进度区间进行播放。示例:playFromMinToMaxProgress({min:对应的值,max:对应的值}) min:最小进度max:最大进度百分比[0.0,1.0] - -
playFromMinToMaxFrame(min,max) 从最小到最大的 Frame 区间进行播放。示例:playFromMinToMaxFrame({min:对应的值,max:对应的值}) min:最小帧max:最大帧整数值 - -
downgradeToPlaceholder 当前 Lottie 视图指定降级为展示 placeholder - - 10.1.52

监听事件

当实用方法调用 pause 和 stop 时,都会先后收到 animationCancel、animationEnd 两个事件。

事件名 描述 参数 最低版本
dataReady 数据下载+视图创建完成 - -
dataFailed 数据加载失败 - -
animationStart 动画开始 - -
animationEnd 动画彻底结束 - -
animationRepeat 动画一次重播结束 - 10.1.52
animationCancel 动画取消 业务调用 Cancel 时回调 -
dataLoadReady 参数化时,数据准备完成,等待业务传入参数化值 - 10.1.72

功能介绍

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

功能 简介
资源文件处理 Lottie 内如何处理图片、资源
播放能力 如何在没有控制层的前提下有自定义播放能力

资源文件处理

图片文件

UI 设计师提供的 Lottie 动画可能会带有目录 images/,里面保存的是一些静态图片。

目前有三种解决方案,推荐前两种:

  1. 整体压缩为 Zip 文件,将 Zip 的路径放在 djangoId 参数里。

  1. 将图片资源转成 base64 内链在 JSON 文件里,这样 JSON 路径放在 path 参数里。

  1. 如果图片资源和 JSON 文件是分离的,那么需要以下处理:动画描述的 .json 文件里,对图片资源是这样定位的:

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

  • h:高度

  • u:根目录

  • p:具体文件

因此如果图片资源统一放在一个单独 URL 里,例如 http://xxx.xxx.com/images/img_0.png,那么需要将http://xxx.xxx.com/ 配置在 assetsPath 参数中。

Base64 support

Lottie 对资源的定义是

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

10.1.52 版本开始,p 节点支持 base64,当使用 base64 时,可以忽略 u 节点,例如:

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

注意:如果在支付宝 10.1.52、10.1.60 版本中使用 Base64 资源,需要在 JSON 文件中增加 assetsPath="/" 作为参数,否则 iOS 上可能无法显示。

注意事项

UI 设计师已完成的物料资源请先在 Lottie 平台 上做一次检测,保证物料包的内容文件符合小程序规范。

image

修复兼容性问题

如果提示“使用插件版本 5.5.0+,客户端必须也是 5.5.0+,iOS/android 旧版播放器会闪退”,必须重新用兼容性模式导出 JSON。

真机测试

请尽量分别使用不同系统下的不同机型进行测试,提高正确性。

选用兼容版本

支付宝版本为 10.1.68 或更低版本时,如果有 iOS 播放不完整、或者 Android 播放闪退的情况,请 UI 设计师使用 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. 如果已经加载了 Lottie 动画,可选择在开发者选项里面关闭动画,关闭后需要重启 App 或者重新加载才可以恢复 Lottie。

  1. iOS 系统在应用切到后台的时候会自动移除动画,在应用切回前台时需要重新添加动画。

  1. 小程序组件 ID 需应用内保证唯一。不同的 Page 的同一个 Lottie 组件,页面切换后组件未必会销毁,因此不建议复用,例如:可翻页的视频页面中的点赞按钮。

  1. 文件压缩。请在文件当前目录直接进行压缩,不要在外层目录进行压缩。当前不支持遍历目录寻找 JSON 文件,如果解压后第一层未发现 JSON 文件则会被认为不合法。

image

支付宝小程序媒体组件 视频·video
支付宝小程序画布组件 画布·Canvas
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

支付宝小程序开发文档

支付宝小程序 快速示例

支付宝小程序 小程序快速示例

支付宝小程序 框架

支付宝小程序 组件

支付宝小程序组件 基础组件

支付宝小程序组件 无障碍访问

支付宝小程序 扩展组件

支付宝小程序扩展组件 UI组件

支付宝小程序 API

支付宝小程序 开发工具

支付宝小程序 云服务

支付宝小程序 Serverless

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }