Android进阶之Lottie、WebP、SVGA

文章介绍了在Android开发中,如何使用Lottie,WebP和SVGA框架来实现更复杂的用户交互动画。Lottie基于.json文件,WebP用于图像动画,而SVGA适合高质量动画,如直播送礼特效。这些技术可以减轻开发者的工作量并优化性能。

说到动画,最开始想到的是帧动画,补间动画,以及属性动画,以上动画其实已经实现了应用中的大多数效果。

但是很多对用户交互要求比较高的应用仅依靠原生来搞已经没法满足要求了。

当然 MP4,GIF也是一种方案,但是哪款应用不去考虑性能以及内存呢,所以这篇文章介绍一下 Lottie,WebP,以及SVGA的基本使用,对于原生开发来说,上面的三种动画效果不需要我们去考虑,这里设计小姐姐就可以去设计,我们只是用一个容器去显示即可。
个人能力有限,不过多去介绍三者的原理以及优缺点

Lottie:

这里使用的 .json 的文件,当然根据需求我们可能会放一些对应的图片到里面去(需要与json文件里的参数名字对应)

推荐一个可以免费下载 Lottie的网页 https://lottiefiles.com/

1.添加依赖

com.airbnb.android:lottie:4.2.2

2.使用方式
2.1在布局文件里面 .xml

<com.airbnb.lottie.LottieAnimationView
      android:layout_width="@dimen/dimen_12"
      android:layout_height="@dimen/dimen_11"
      app:lottie_autoPlay="true"
      app:lottie_fileName="lottie/lot_live.json"
      app:lottie_loop="true"/>

lottie_autoPlay - 是否自动播放
lottie_loop - 是否循环播放
lottie_fileName - 需要播放的 json 文件位置,需要放在 assets 文件夹下

2.2代码里面

lav_j.setAnimation("lottie/lot_ld.json")  //动态添加播放文件
lav_j.playAnimation()  //开始播放
lav_j.isAnimating() //是否正在播放动画
lav_j.cancelAnimation() //取消播放
lav_j.setProgress() //设置到第几帧

WebP:

1.添加依赖

com.facebook.fresco:webpsupport:2.6.0
com.facebook.fresco:animated-webp:2.6.0

2.使用

布局文件里面

<com.facebook.drawee.view.SimpleDraweeView
        android:layout_width="@dimen/dimen_40"
        android:layout_height="@dimen/dimen_40" />

代码里面动态赋值

val controller: DraweeController = Fresco.newDraweeControllerBuilder()
            .setUri(url)
            .setAutoPlayAnimations(true)
            .build()
 iv.controller = controller

SVGA:

因为SVGA可以播放比较高质量的动画,比如直播间送礼特效的动画,所以SVGA的初始化相对以上两种稍微繁琐一点,类似于送礼动画不可能每次都去下载解析,所以SVGA具备缓存功能

1.导入依赖

com.github.yyued:SVGAPlayer-Android:2.6.1

2.初始化SVGA这里建议在 Application 里面初始化,尽量不要使用时在初始化,因为播放时还是比较消耗性能的

SVGAHelper.init(BaseApplication.context)

这里简单说一下使用,后面直接贴源码

2.1清单文件中

<com.opensource.svgaplayer.SVGAImageView
         android:id="@+id/iv_live_gift"
         android:layout_width="@dimen/dimen_40"
         android:layout_height="@dimen/dimen_40"
         android:layout_marginStart="@dimen/dimen_10"
         android:background="@drawable/bg_0f0012_30"
         android:onClick="@{vm.onGift}"
         android:scaleType="fitXY" />

2.2代码中

 SVGAHelper.startParse("svga/zbj_lw_dh.svga", object : SVGAParser.ParseComplet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值