使用Lottie動畫實現(xiàn)底部導航欄

來吧,展示K卤埂U畛浴!

演示Normal.gif

演示Fg.gif

演示Vp+Fg.gif

快速實現(xiàn)上述效果

BottomTabWithLottieNavigation

Lottie動畫實現(xiàn)底部導航欄

在根目錄下的 build.gradle 中添加

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

在Module中的 build.gradle 中添加

// 引入庫_必須引入lottie-android
implementation 'com.airbnb.android:lottie:3.5.0'
implementation 'com.github.WarmYunyang:BottomTabWithLottieNavigation:v1.0.1'

因為是使用lottie-android實現(xiàn)的動效西雀,所以必須引入萨驶。

定義TabEntity實現(xiàn)CustomBottomTabEntity該類

CustomBottomTabEntity.kt
interface CustomBottomTabEntity {

    fun getTabTitle(): String?

    // 限定資源文件位置必須為raw包下資源
    @RawRes
    fun getTabIcon(): Int

}

一個簡單的TabEntity,只有兩個屬性艇肴,tab名字和tab動畫資源_RawRes

TabEntity.kt
data class TabEntity(val title: String, val iconRes: Int) : CustomBottomTabEntity {

    override fun getTabTitle(): String? {
        return title
    }

    override fun getTabIcon(): Int {
        return iconRes
    }

}

在module中res/raw(沒有raw腔呜,創(chuàng)建一個包)叁温,放入Lottie動畫資源json文件


res/raw包

在主頁面中實現(xiàn)底部導航欄_詳細注釋文本

class MainActivity : AppCompatActivity(), OnTabSelectListener {

    // tab名字數(shù)組
    private val mTitles = arrayOf("視頻", "發(fā)現(xiàn)", "我的")

    // tabLottieRaw資源數(shù)組
    private val mIcons = arrayOf(
        R.raw.video,
        R.raw.discover,
        R.raw.mine
    )

    // 定義TabEntity數(shù)組
    private val mTabEntities: ArrayList<CustomBottomTabEntity> = ArrayList()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // BottomTabWithLottieNavigation_Lottie動畫底部導航欄組件
        val mainBtwln: BottomTabWithLottieNavigation = findViewById(R.id.main_btwln)

        // TabEntity數(shù)組存入tab名字和tabLottie動畫資源
        for (i in mTitles.indices) {
            mTabEntities.add(TabEntity(mTitles[i], mIcons[i]))
        }

        // kt_ext
        mainBtwln.configBbwln()
    }

    fun BottomTabWithLottieNavigation.configBbwln() {
        // 組件設置數(shù)據(jù)
        setTabItems(mTabEntities)
        // 組件設置監(jiān)聽器
        setOnTabSelectListener(this@MainActivity)
    }

    // 選中
    override fun onTabSelect(position: Int) {
        Toast.makeText(this@MainActivity, "onTabSelect  $position", Toast.LENGTH_SHORT).show()
    }

    // 再次選中
    override fun onTabReselect(position: Int) {
        Toast.makeText(this@MainActivity, "onTabReselect  $position", Toast.LENGTH_SHORT).show()
    }

}

布局文件資源_activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <com.yunyang.bottombarwithlottie.view.BottomTabWithLottieNavigation
        android:id="@+id/main_btwln"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/darker_gray"
        app:btwln_textSelectColor="@android:color/holo_red_dark"
        app:btwln_textUnselectColor="@android:color/white" />

</androidx.appcompat.widget.LinearLayoutCompat>

運行顯示結果


演示.jpg
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市核畴,隨后出現(xiàn)的幾起案子膝但,更是在濱河造成了極大的恐慌,老刑警劉巖谤草,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跟束,死亡現(xiàn)場離奇詭異,居然都是意外死亡丑孩,警方通過查閱死者的電腦和手機冀宴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來温学,“玉大人略贮,你說我怎么就攤上這事》阏悖” “怎么了刨肃?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長箩帚。 經(jīng)常有香客問我,道長黄痪,這世上最難降的妖魔是什么紧帕? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮桅打,結果婚禮上是嗜,老公的妹妹穿的比我還像新娘。我一直安慰自己挺尾,他們只是感情好鹅搪,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遭铺,像睡著了一般丽柿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魂挂,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天甫题,我揣著相機與錄音,去河邊找鬼涂召。 笑死坠非,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的果正。 我是一名探鬼主播炎码,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼盟迟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了潦闲?” 一聲冷哼從身側響起队萤,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎矫钓,沒想到半個月后要尔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡新娜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年赵辕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片概龄。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡还惠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出私杜,到底是詐尸還是另有隱情蚕键,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布衰粹,位于F島的核電站锣光,受9級特大地震影響,放射性物質發(fā)生泄漏铝耻。R本人自食惡果不足惜誊爹,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓢捉。 院中可真熱鬧频丘,春花似錦、人聲如沸泡态。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽某弦。三九已至桐汤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刀崖,已是汗流浹背惊科。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亮钦,地道東北人馆截。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜡娶。 傳聞我的和親對象是個殘疾皇子混卵,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容