原文:https://mp.weixin.qq.com/s?__biz=MzIxNjc0ODExMA==&mid=2247485033&idx=1&sn=54dd477b4c4cd30d12fde48eba929546&chksm=97851f48a0f2965e342a2cdf55cbefceaa20a24b887e2b79ff940ca57a17b6cb9ae999643ace#rd
设计师使用 After Effects 设计出完美的动画,然后通过 Bodymovin 插件进行简单的转换和导出成 JSON,最后工程师将 JSON 放入 App 项目中,就可以将动画 100% 还原到产品中。
缺陷:
系统版本限制,Android(Api 14+) 和 iOS(>=8.0) 都有不同的版本限制。
有一些交互动画,不被支持,哪怕导出了也无法被正常执行。
Bodymovin 插件还有待完善,有些 After Effects 实现的效果,无法被正常导出。
开始使用:
compile 'com.airbnb.android:lottie:2.0.0-beta4'
最简单的使用方式是直接使用 LottieAnimationView ,LottieAnimationView 直接继承自 AppCompatImageView 。
只需要提前将动画的 JSON 文件,放在 app/src/main/assets 目录下,在 Layout 布局文件中,可以直接使用。
<com.airbnb.lottie.LottieAnimationView android:id="@+id/animation_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:lottie_fileName="hello-world.json" app:lottie_loop="true" app:lottie_autoPlay="true" />
或者你也可以使用逻辑代码去控制 Lottie 动画的播放
LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view); animationView.setAnimation("hello-world.json"); animationView.loop(true); animationView.playAnimation();
它支持几个属性:
lottie_fileName : 播放动画的 json 文件。
lottie_loop:是否循环播放,默认为 false。
lottie_autoPlay:是否加载完成之后,自动播放,默认为 false。
获取网络上的动画:
try { JSONObject json = new JSONObject(Const.json); LottieComposition.Factory.fromJson(getResources(), json, new OnCompositionLoadedListener() { @Override public void onCompositionLoaded(LottieComposition composition) { lottie1.setProgress(0); lottie1.loop(true); lottie1.setComposition(composition); lottie1.playAnimation(); } }); } catch (JSONException e) { e.printStackTrace(); }