高仿 自如APP 底部導(dǎo)航切換動畫效果!
BAT
作者:孔鵬飛
鏈接:https://www.jianshu.com/p/7a544cf34bcf
前言
最近抽時(shí)間模仿實(shí)現(xiàn)了自如APP的底部導(dǎo)航切換動畫,其實(shí)我很忙的,也不知道在忙啥??????
正文
自如APP底部Tab切換效果用的是SVGA動畫,SVGA 是一種跨平臺的開源動畫格式,同時(shí)兼容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"
/>
在代碼中設(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()
布局文件分析
-
底部每個(gè)Tab由SVGAImageView+ImageView+TextView組成。 -
當(dāng)Tab未選中時(shí),SVGAImageView隱藏,ImageView顯示未選中狀態(tài)下的圖片。 -
當(dāng)Tab選中時(shí),SVGAImageView顯示,ImageView先是不可見,然后播放SVGA動畫,播放完成后SVGAImageView隱藏,ImageView可見并顯示選中狀態(tài)下的圖片。
資源文件分析
解壓自如APP(7.2.8版本),提取資源文件。
-
SVGA資源文件 位于assets\svga目錄下,可以直接把SVGA文件拖到svga特效在線預(yù)覽網(wǎng)站查看效果。

-
靜態(tài)圖片文件 因自如APP對res目錄下的圖片資源做了處理,原來的圖片文件名字已經(jīng)替換成a.png,b.png這樣的字符串,可讀性很差,我整理了一下,如下:
代碼實(shí)現(xiàn)
代碼就不貼了,完整的代碼已經(jīng)上傳GitHub,地址為:https://github.com/kongpf8848/Animation ,該項(xiàng)目包含了豐富的動畫示例(逐幀動畫,補(bǔ)間動畫,Lottie動畫,GIF動畫,SVGA動畫)
推薦閱讀
? 耗時(shí)2年,Android進(jìn)階三部曲第三部《Android進(jìn)階指北》出版!
BATcoder技術(shù)群,讓一部分人先進(jìn)大廠
大家好,我是劉望舒,騰訊TVP,著有三本業(yè)內(nèi)知名暢銷書,連續(xù)四年蟬聯(lián)電子工業(yè)出版社年度優(yōu)秀作者,谷歌開發(fā)者社區(qū)特邀講師,百度百科收錄的高級技術(shù)專家。
前華為技術(shù)專家,現(xiàn)大廠技術(shù)負(fù)責(zé)人。
想要加入 BATcoder技術(shù)群,公號回復(fù)BAT 即可。
為了防止失聯(lián),歡迎關(guān)注我的小號
微信改了推送機(jī)制,真愛請星標(biāo)本公號??
