美文网首页Android技术进阶Android 开发技术分享代码
高仿自如APP底部导航切换动画效果

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

作者: 孔鹏飞 | 来源:发表于2021-07-09 11:31 被阅读0次

前言

最近抽时间模仿实现了自如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"
 />
属性 类型 默认值 说明
source string 文件路径,相对于assets目录的路径或者为url
autoPlay boolean true 是否自动播放动画
loopCount integer 0 动画循环次数,0表示无限循环
antiAlias boolean false 画笔是否抗锯齿
clearsAfterStop boolean true 在动画停止后是否清除画布
fillMode enum Forward 取值为Forward或Backward,Forward表示动画完成后将停留在最后一帧,Backward表示动画完成后将停留在第一帧

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

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版本),提取资源文件。

首页 找房 发现生活 业主委托 我的
tab_home_select.svga tab_search_select.svga tab_service_select.svga tab_lvju.select.svga tab_my_select.svga
  • 静态图片文件

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

首页1 首页2 找房1 找房2 发现生活1
1.png 2.png 3.png 4.png 5.png
发现生活2 业主委托1 业主委托2 我的1 我的2
6.png 7.png 8.png 9.png 10.png

代码实现

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

闪屏页 引导页 汽车之家 京东到家
闪屏页 引导页 汽车之家 京东到家

相关文章

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

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

  • vue 路由动画过渡效果

    为了增加用户体验,在切换路由时可加动态的过渡效果。应用场景: 切换如上页面的底部导航栏,添加 动画过渡效果。 1、...

  • vue 路由动画过渡效果

    为了增加用户体验,在切换路由时可加动态的过渡效果。应用场景: 切换如上页面的底部导航栏,添加 动画过渡效果。 1、...

  • RadioButton的总结

    前言 单选按钮,在很多地方都可以用到,比如底部导航栏,仿TabLaoyut实现ViewPager切换效果等等。就像...

  • Flutter 构建常用的 App 页面框架

    大多数 App 中都会有底部导航栏,通过底部导航栏切换实现不同页面之间的切换。在Flutter 中提供了 Bott...

  • 仿抖音底部导航效果(一)

    最终效果预览 这次实现的是第一步效果 原理解析:通过对控件添加动画来实现仿抖音底部导航的效果 一.首先编写布局文件...

  • 仿抖音底部导航

    最终效果预览 这次实现的是第一步效果 原理解析:通过对控件添加动画来实现仿抖音底部导航的效果 一.首先编写布局文件...

  • TabView,快速实现Android底部导航栏

    前言 主流的安卓APP,首页经常会采用底部导航栏切换的效果。针对这种情况,封装成TabView工具类,方便大家使用...

  • 仿小米商城底部导航栏(基于BottomNavigationBar

    简介 现在大多数App都会用到底部导航栏,比如QQ、微信和购物App等等。有了底部导航栏,用户可以随时切换界面,查...

  • 高仿微信底部导航栏动画

    原理 首先,项目的架构是一个ViewPager加上底部导航栏,ViewPager的滑动可以产生一个滑动比例,底部导...

网友评论

    本文标题:高仿自如APP底部导航切换动画效果

    本文链接:https://www.haomeiwen.com/subject/utxfpltx.html