高仿 自如APP 底部导航切换动画效果

code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群

作者:孔鹏飞
链接:https://www.jianshu.com/p/7a544cf34bcf
声明:本文已获孔鹏飞授权发表,转发等请联系原作者授权

前言

最近抽时间模仿实现了自如APP的底部导航切换动画,其实我很忙的,也不知道在忙啥????????????

仿自如APP底部导航动画.gif

正文

自如APP底部Tab切换效果用的是SVGA动画,SVGA 是一种跨平台的开源动画格式,同时兼容iOS/Android/Flutter/Web平台。SVGA的简单使用可以参考以下方式:

在项目根目录的build.gradle文件中添加:

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

在模块目录的build.gradle文件中添加:

implementation 'com.github.yyued:SVGAPlayer-Android:2.0.0'

在xml中定义SVGAImageView控件:

<com.opensource.svgaplayer.SVGAImageView
    android:id="@+id/svg_image_view"
    android:layout_width="32dp"
    android:layout_height="32dp"
    app:source="svga/tab_my_select.svga"
    app:autoPlay="false"
    app:loopCount="1"
    app:antiAlias="true"
 />

在代码中设置监听器,然后播放动画,如下:

svg_image_view.callback = object : SVGACallback {
    override fun onFinished() {
    }

    override fun onPause() {
    }

    override fun onRepeat() {
    }

    override fun onStep(frame: Int, percentage: Double) {
    }
}
svg_image_view.startAnimation()

布局文件分析

布局.png
  • 底部每个Tab由SVGAImageView+ImageView+TextView组成。

  • 当Tab未选中时,SVGAImageView隐藏,ImageView显示未选中状态下的图片。

  • 当Tab选中时,SVGAImageView显示,ImageView先是不可见,然后播放SVGA动画,播放完成后SVGAImageView隐藏,ImageView可见并显示选中状态下的图片。

资源文件分析

解压自如APP(7.2.8版本),提取资源文件。

  • SVGA资源文件 位于assets\svga目录下,可以直接把SVGA文件拖到svga特效在线预览网站查看效果。

  • 静态图片文件 因自如APP对res目录下的图片资源做了处理,原来的图片文件名字已经替换成a.png,b.png这样的字符串,可读性很差,我整理了一下,如下:

代码实现

代码就不贴了,完整的代码已经上传GitHub,地址为:https://github.com/kongpf8848/Animation ,该项目包含了丰富的动画示例(逐帧动画,补间动画,Lottie动画,GIF动画,SVGA动画)

相关阅读

Android-图片加载库 Coil 介绍

ImageView scaleType 各种不同效果解析

Android实现八大行星绕太阳3D旋转效果

长图片自动循环滚动效果 (仿小红书)

Android 的毛玻璃模糊效果,我使用 OpenCV 来搞

我是code小生,喜欢可以随手点个在看、转发给你的朋友,谢谢~

点个在看支持下呀!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值