高仿自如APP底部導(dǎo)航切換動畫效果

前言

最近抽時間模仿實(shí)現(xiàn)了自如APP的底部導(dǎo)航切換動畫,其實(shí)我很忙的,也不知道在忙啥??????

仿自如APP底部導(dǎo)航動畫.gif

正文

自如APP底部Tab切換效果用的是SVGA動畫,SVGA 是一種跨平臺的開源動畫格式,同時兼容iOS/Android/Flutter/Web平臺。SVGA的簡單使用可以參考以下方式:

在項(xiàng)目根目錄的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"
 />
屬性 類型 默認(rèn)值 說明
source string 文件路徑,相對于assets目錄的路徑或者為url
autoPlay boolean true 是否自動播放動畫
loopCount integer 0 動畫循環(huán)次數(shù),0表示無限循環(huán)
antiAlias boolean false 畫筆是否抗鋸齒
clearsAfterStop boolean true 在動畫停止后是否清除畫布
fillMode enum Forward 取值為Forward或Backward,F(xiàn)orward表示動畫完成后將停留在最后一幀,Backward表示動畫完成后將停留在第一幀

在代碼中設(shè)置監(jiān)聽器,然后播放動畫,如下:

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組成。
  • 當(dāng)Tab未選中時,SVGAImageView隱藏,ImageView顯示未選中狀態(tài)下的圖片。
  • 當(dāng)Tab選中時,SVGAImageView顯示,ImageView先是不可見,然后播放SVGA動畫,播放完成后SVGAImageView隱藏,ImageView可見并顯示選中狀態(tài)下的圖片。

資源文件分析

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

首頁 找房 發(fā)現(xiàn)生活 業(yè)主委托 我的
tab_home_select.svga tab_search_select.svga tab_service_select.svga tab_lvju.select.svga tab_my_select.svga
  • 靜態(tài)圖片文件

因自如APP對res目錄下的圖片資源做了處理,原來的圖片文件名字已經(jīng)替換成a.png,b.png這樣的字符串,可讀性很差,我整理了一下,如下:

首頁1 首頁2 找房1 找房2 發(fā)現(xiàn)生活1
1.png
2.png
3.png
4.png
5.png
發(fā)現(xiàn)生活2 業(yè)主委托1 業(yè)主委托2 我的1 我的2
6.png
7.png
8.png
9.png
10.png

代碼實(shí)現(xiàn)

代碼就不貼了,完整的代碼已經(jīng)上傳GitHub,地址為:https://github.com/kongpf8848/Animation,該項(xiàng)目包含了豐富的動畫示例(逐幀動畫,補(bǔ)間動畫,Lottie動畫,GIF動畫,SVGA動畫)

閃屏頁 引導(dǎo)頁 汽車之家 京東到家
閃屏頁
引導(dǎo)頁
汽車之家
京東到家
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容