当前位置: 首页 > 科技观察

Airbnb的开源项目Lottie,大年初一上班的堡垒

时间:2023-03-13 17:17:46 科技观察

没想到是立春。撸起袖子,干就对了!就在几天前,Airbnb开源了一个名为Lottie的项目。我个人觉得这个项目简直就是堡垒!相信大家对动画都不陌生。在App开发过程中,适当使用动画可以提升用户体验。经验使我们的产品锦上添花。对于一些简单的动画,我们可以轻松实现,但是对于一些比较复杂的动画,实现起来就比较麻烦了。比如下图中的一些动画:怎么样?这些不是简单的移动、缩放和旋转。速率适配,由于Android不提供原生Gifapi支持,所以该方案会遇到兼容性问题;使用帧动画,这种方式不如Gif,一般来说,使用帧动画比Gif占用空间大很多,而且还需要适配多种屏幕分辨率,但一般不会遇到兼容性问题;使用视频,这种方法当然是可以的,但是一般来说,视频都是用来做宣传片的,一般的动画是远远没有必要用视频来实现的,有点大材小用,还是占了很多空间。有没有更好的方法来实现它?当然,Android5.x提供了对SVG的支持。一些稍微复杂的动画可以通过VectorDrawable和AnimatedVectorDrawable的结合来实现,但是兼容性是个问题。当然,这个可以通过一些第三方库来解决,但是整个实现过程非常麻烦。每次实现一个新的动画,都得从头开始。最重要的是如果一个公司的app,iOS也需要实现同一套动画,资源占用和开发成本太大。Airbnb的开源项目完美解决了上述问题。让我们来看看整个过程是什么样子的。假设我们要为引导页制作一个欢迎动画。这个一般设计师都会用Adobe下的AfterEffects(简称AE)来制作动画。设计师用AE做动画比工程师用代码实现动画更快。有很多,调整起来也很方便。之后AE里有个插件叫做Bodymovin(https://github.com/bodymovin/bodymovin)。这个json文件描述了动画中一些关键点的坐标和运动轨迹。之后我们在项目中引用了Lottie开源库,在布局文件中简单的加了这么一句就完全实现了。或者在代码中这样使用:值得一提的是,我们的hello-world.json文件只需要放在app/src/main/assets目录下就可以了。当然还有更多的用法,比如给动画添加事件,比如描述动画的json文件可以远程更新下载到本地,这样就可以定时安静的更新你的动画了。有了这个库,我们就可以充分发挥我们的想象力,非常简单方便的实现一套炫酷的动画。最重要的是,这个库是跨平台的,支持Android、iOS和ReactNative,共享一套json动画描述文件,简单!其实Facebook前段时间也开了一个类似的库,叫Keyframes(https://github.com/facebookincubator/Keyframes),也是跨平台的,不过Lottie支持的功能比Keyframes多。并且根据Airbnb官博,这个库未来会支持更多的特性和功能。airbnb/lottie-androidiOS:https://github.com/airbnb/lottie-iosReactNative:https://github.com/airbnb/lottie-react-native最好,Airbnb也提供了一个示例apk,考虑到有些人下载有困难GooglePlay上的apk,我也贴心地下载了示例apk,公众号AndroidDeveloper后台回复“lottie”关键字获取。【本文为专栏作者“stormzhang”原创稿件,转载请联系原作者(微信公众号:googdev)】点此查看该作者更多好文