前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lottie- Android动画

Lottie- Android动画

原创
作者头像
.T.
发布2022-02-19 14:02:51
2.2K0
发布2022-02-19 14:02:51
举报
文章被收录于专栏:CMS建站教程CMS建站教程

Lottie是什么?

Lottie是Airbnb开源的一个支持 Android、iOS 以及 ReactNative,利用json文件的方式快速实现动画效果的库。这么看可能很难理解,接下来我将详细的讲解如何使用。 Lottie项目地址:https://github.com/airbnb/lottie-android

Demo程序的github地址 : https://github.com/panacena/LottieTest/

一、Lottie能干什么?

在回答Lottie能干什么之前,我们先想下如下的动画如何实现?

使用帧动画。这种方式固然可行,但是一个需要动画添加很多张图片,势必会导致apk体积变大,并且还要根据不同的尺寸进行适配。

  • 用 Gif。但是使用 Gif 占用空间较大,而且需要为各种屏幕尺寸、分辨率做适配,并且Android本是不支持gif直接展示的。
  • 用代码加图片辅助。如之前写的 仿照驾校一点通欢迎页,这种方式繁琐并且每更新一次都需要重新写很多代码。
  • Android 5.x 之后提供了对 SVG 的支持,通过 VectorDrawable、AnimatedVectorDrawable 的结合可以实现一些稍微复杂的动画,但是问题和前2个类似。

那么有没有什么方式是即可以方便的实现动画效果,又可以不用考虑适配的问题,而且Android、ios还可以兼容呢?

Lottie就是支持Android, iOS, 和React Native,并且只需简单的代码就可以实现复杂动画效果的库

答案就是可以做以上动画。

二、Lottie在Android端怎么用?

假设我们要做一个缓冲数据时的一个loading动画,不用Lottie之前你们公司的美工一般都会给一个gif动画效果和一些切好的一帧一帧的图片。现在不需要这么操作了,只要你们公司的美工做如下的操作:

让设计师使用Adobe 的 After Effects(简称 AE)工具(美工一般都会这个)制作这个动画。 1.在AE中安装一个叫做Bodymovin的插件。 2.下载 bodymovin,解压缩后只需要\build\extension\bodymovin.zxp这个档案就可以

3.手动安装plugin,以windows系统而言,要先下载ZXP Installer(地址:[http://aescripts.com/learn/zxp-installer/),然后双击打开软件,点击“File”>“Open”菜单项载入上述bodymovin.zxp插件包,ZXP Installer会自动开始安装。安装完成后的软件主页面如下图所示,表示插件已成功安装。

4.打开AE,点击“编辑”>“首选项”>“常规”菜单项,选中“允许脚本写入文件和访问网络”,点击确定。

就安装好了


下面就是苦逼Android程序员应该如何做咯

1.在build.gradle中添加

代码语言:javascript
复制
dependencies {
compile 'com.airbnb.android:lottie:1.0.1'
}

2.layout文件中添加

代码语言:javascript
复制
 <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" />

3.将帅帅的美工给你的json文件重命名为xml中lottie_fileName的值,如上就是hello-world.json。将hello-world.json放入 app/src/main/assets目录中。打包吧!!

然后你就会发现奇迹出现了,没有一张图片,没有一个gif,但是动画效果出来了!就是这么简单,就是这么暴力!


三、Lottie进阶,如何更加高效和方便的实用?

1.最简单的使用方式就是上方直接在xml中定义的方式。 2.使用代码的方式,支持从assets目录中直接读取json文件、json字符串的方式、stream流的方式等

3.从网络获取json文件,直接显示动画。这种方式很炫,你就可以不用不更新apk就不动声色的定期更新你的动画了。 下方是我写的一个小demo,使用okhttp访问网络上一段json文件,然后显示动画。

代码语言:javascript
复制
client.newCall(request).enqueue(new Callback() {
            @Override public void onFailure(Call call, IOException e) {

            }

            @Override public void onResponse(Call call, Response response) throws IOException {
                if (!response.isSuccessful()) {
                }

                try {
                    JSONObject json = new JSONObject(response.body().string());
                    LottieComposition.fromJson(getResources(), json, new LottieComposition.OnCompositionLoadedListener() {
                                @Override
                                public void onCompositionLoaded(LottieComposition composition) {
                                    setComposition(composition);
                                }
                            });
                } catch (JSONException e) {
                }
            }
        });

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lottie是什么?
    • 一、Lottie能干什么?
      • 二、Lottie在Android端怎么用?
        • 下面就是苦逼Android程序员应该如何做咯
          • 三、Lottie进阶,如何更加高效和方便的实用?
          相关产品与服务
          腾讯会议
          腾讯会议(Tencent Meeting)为企业打造专属的会议能力,卓越的音视频性能,丰富的会议协作能力,坚实的会议安全保障,提升协作效率,满足大中小会议全场景需求。您可以使用腾讯会议进行远程音视频会议、在线协作、会管会控、会议录制、指定邀请、布局管理、同声传译等。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档