Lottie for Android
Lottie库
Lottie解析json动画
Lottie是Airbnb开源的一个支持 Android、iOS 以及 ReactNative,利用json文件的方式快速实现动画效果的库。
json动画实现
- 设计师使用Adobe 的 After Effects(简称 AE)工具制作动画。
- 在AE中安装Bodymovin的插件。
Lottie 方便、适配
- 使用 Gif,这种方式当然可行,但是使用 Gif 占用空间较大,而且需要为各种屏幕尺寸、分辨率做适配,因为 Android 没有提供原生 Gif 的 api 支持,所以这种方案还会遇到兼容性问题;
- 使用帧动画,这种方式还不如 Gif,一般来说使用帧动画占用空间比 Gif 还要大的多,而且一样要做多屏幕分辨率的适配,不过一般不会遇到兼容性问题;
- 使用视频,这种方式当然可以,但是一般来说宣传片才用的上视频,一般的动画远不需要用视频才能实现的,未免有些大材小用了,而且占用空间依然很大。
- Android 5.x 之后提供了对 SVG 的支持,通过 VectorDrawable、AnimatedVectorDrawable 的结合可以实现一些稍微复杂的动画,但是兼容性是一个问题,当然这个可以通过一些第三方库来解决,不过整个实现流程非常麻烦,每次全新实现一个动画都得重头来过,最最关键的是,如果一个公司下的 App,iOS 也要实现一套一样的动画,资源的占用与开发成本就显得过大了。
简单使用Lottie
添加Lottie代码
AS添加依赖:
dependencies { compile 'com.airbnb.android:lottie:2.0.0-beta3' }
也可直接将下载的Lottie压缩包lottie-android-master\lottie\src\main\java下文件夹添加到Demo中
layout文件中添加
hello-world.json 文件只需要放在 app/src/main/assets 目录下就 ok 了,可从Lottie压缩包lottie-android-master\LottieSample\src\main\assets目录下获取json文件
<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" />
代码中使用
LottieAnimationView animationView = (LottieAnimationView) findViewById(R.id.animation_view);
animationView.setAnimation("hello-world.json");
animationView.loop(true);