【经验分享】支付宝小程序lottie动画尝鲜

简介: 【经验分享】支付宝小程序lottie动画尝鲜

简介:

Lottie 是一个用于 Web 和 iOS 的移动库,可使用 Bodymovin 解析以 JSON 格式导出的 Adobe After Effects 动画,并将其本地呈现在移动设备上。以下为 Lottie 动画库适配小程序的方法。

支付宝小程序的lottie动画库是按照lottie-web动画库改造而来。参考lottie-web:https://github.com/airbnb/lottie-web,以及官方文档:http://airbnb.io/lottie/#/

目前我们要用到的是http://airbnb.io/lottie/#/web

支付宝小程序已将loadAnimation等方法封装到lottie组件里,通过参数的方式传入。

官方文档及FAQ参考:https://opendocs.alipay.com/mini/component/lottie

下面我们将实操一个简单的lottie动画:

先看效果图:


<lottie autoplay="{{autoplay}}" id="lottieId" path="{{path}}" repeatCount="{{repeatCount}}" placeholder="{{placeholder}}" />
<button onTap="handleStart">开始</button>
<button onTap="handlePause">暂停</button>


Page({
  data: {
    autoplay: false, // 是否自动播放
    path: 'https://qiniu-web.qtshe.com/20200922data.json', // lottie动画数据源
    placeholder: 'https://qiniu-image.qtshe.com/default.png', // 版本过低时显示的缺省图
    optimize: true, // 允许低版本使用降级方案
    repeatCount: -1 // 是否重复播放,负数表示无限播放
  }
});


经过实践下来 比较喜欢的是直接将设计小姐姐给的 data.json 使用path参数传入的方式。

设计小姐姐给的json文件需要放到https://design.alipay.com/lolita 进行检测,查看兼容性问题,具体就不赘述了,官方文档已经列出来了。

目前lottie组件提供了几个操作动画的实例方法:

首先我们需要在onReady里获取lottie组件实例: my.createLottieContext(elementId);

这个获取实例的方法官方文档没写,所以在尝试获取实例的时候踩过比较多的坑,已反馈给官方文档童鞋,现在应该已经更新了。


onReady() {
  this.lottieContext = my.createLottieContext('lottieId');
},
// 开始播放
handleStart() {
  this.lottieContext.play()
},
// 暂停播放
handlePause() {
  this.lottieContext.pause()
}


然后我们就可实现 点击暂停以及点击播放的操作了。


至于djangoId的使用方式:

设计小姐姐提供的 Lottie 动画可能会带有目录 images/,里面保存的是一些静态图片。我们需要将images静态资源文件以及data.json文件统一压缩成zip文件,通过djangoId的方式引入。

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

  1. 整体压缩为 Zip 文件,将 Zip 的路径放在 djangoId 参数里。
  2. 将图片资源转成 base64 内链在 JSON 文件里,这样 JSON 路径放在 path 参数里。(https://qiniu-web.qtshe.com/20200922data.json


最后实践的代码片段如下(访问可查看效果):

https://pen.mini-code.com/s/ad1d4a04-3c0b-45ec-9117-52bb225bffb8

目录
相关文章
|
5月前
|
小程序 API PHP
技术经验分享:hinkPHP5.0+小程序商城
技术经验分享:hinkPHP5.0+小程序商城
|
5月前
|
小程序 前端开发 Java
(JAVA)支付宝小程序登录相关(authToken获取用户唯一userId、encryptedData解密手机号)
(JAVA)支付宝小程序登录相关(authToken获取用户唯一userId、encryptedData解密手机号)
420 0
|
6月前
|
JSON 小程序 安全
【经验分享】如何实现小程序日历范围选择功能
【经验分享】如何实现小程序日历范围选择功能
403 9
|
6月前
|
移动开发 小程序 API
【每周一个小技巧】支付宝小程序内如何跳转生活号文章
【每周一个小技巧】支付宝小程序内如何跳转生活号文章
265 6
|
6月前
|
移动开发 小程序 JavaScript
【经验分享】记一次支付宝小程序的性能优化
【经验分享】记一次支付宝小程序的性能优化
116 6
|
6月前
|
移动开发 小程序 前端开发
【经验分享】如何实现在支付宝小程序内的骨架屏效果
【经验分享】如何实现在支付宝小程序内的骨架屏效果
84 6
|
6月前
|
小程序
【经验分享】如何生成支付宝小程序scheme链接
【经验分享】如何生成支付宝小程序scheme链接
2500 1
|
6月前
|
小程序 JavaScript 前端开发
【经验分享】如何实现在支付宝小程序内的图片裁剪功能
【经验分享】如何实现在支付宝小程序内的图片裁剪功能
151 1
|
6月前
|
缓存 小程序 IDE
【每周一个小技巧】支付宝小程序自定义tabbar效果
【每周一个小技巧】支付宝小程序自定义tabbar效果
168 0
|
1月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
213 3