【经验分享】支付宝小程序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

目录
相关文章
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33250 201
如何保证分布式文件系统的数据一致性
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36820 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24905 16
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36824 15
重生之---我测阿里云U1实例(通用算力型)
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29948 52

热门文章

最新文章