来吧,展示!!!

演示Normal.gif

演示Fg.gif

演示Vp+Fg.gif

快速实现上述效果

在根目录下的 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实现的动效,所以必须引入。

定义TabEntity实现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,创建一个包),放入Lottie动画资源json文件

res/raw包

在主页面中实现底部导航栏_详细注释文本

class MainActivity : AppCompatActivity(), OnTabSelectListener {

// tab名字数组

private val mTitles = arrayOf("视频", "发现", "我的")

// tabLottieRaw资源数组

private val mIcons = arrayOf(

R.raw.video,

R.raw.discover,

R.raw.mine

)

// 定义TabEntity数组

private val mTabEntities: ArrayList = 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数组存入tab名字和tabLottie动画资源

for (i in mTitles.indices) {

mTabEntities.add(TabEntity(mTitles[i], mIcons[i]))

}

// kt_ext

mainBtwln.configBbwln()

}

fun BottomTabWithLottieNavigation.configBbwln() {

// 组件设置数据

setTabItems(mTabEntities)

// 组件设置监听器

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

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">

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" />

运行显示结果

演示.jpg

android 导航栏动画,使用Lottie动画实现底部导航栏相关推荐

  1. android jason动画,Android 动画之Lottie动画使用

    Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...

  2. 【Android -- 动画】Lottie 动画的基本使用

    一.简介 Lottie 是 Airbnb 开源的一个面向 iOS.Android.React Native 的动画库,能分析 Adobe After Effects 导出的动画,并且能让原生 App ...

  3. android底部导航栏svg,vue开发移动端底部导航条功能

    效果图 src/app.vue 头部导航 内容区域 import Tabbar from 'components/tabbar'; export default { name: 'App', comp ...

  4. ios底部栏设计规范_设计干货:底部导航栏规范设计总结

    本文翻译了 Material Design 规范中对底部导航的规范总结,希望可以带给你更多帮助. 本文翻译了 Material Design 规范中对底部导航的规范总结,希望可以带给你更多帮助. 备注 ...

  5. php点击切换图片的底部导航,如何优雅地使用BottomNavigationView实现底部导航栏+fragment切换效果...

    BottomNavigationView.jpeg 引言 之前总是使用RadioButton+ViewPager来实现底部导航栏+fragment切换效果,总是繁琐地还需要写ViewPager的适配器 ...

  6. 基于eclipse的android项目实战—博学谷(四)底部导航栏

    本项目是用eclipse软件编写,经过我的亲自实践,其真实有效,希望能给您有所帮助

  7. html5 底部导航栏,web前端html5手机端底部导航多种方法推荐

    DEMO * { padding:0px; margin:0px; font-family:微软雅黑; } ul li { list-style:none; } .container { width: ...

  8. android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...

    Android实现简单底部导航栏 Android仿微信滑动切换效果 发布时间:2020-10-09 19:48:00 来源:脚本之家 阅读:96 作者:丶白泽 Android仿微信滑动切换最终实现效果 ...

  9. Android ------ Android X 的BottomNavigationView底部导航栏

    有小伙伴问到我BottomNavigationView底部导航的问题,分享一下,底部导航栏的使用比较常见,目前常用的APP几乎都是使用底部导航栏将内容分类. 这个Android 的底部导航栏 Bott ...

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

    code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:孔鹏飞 链接:https://www.jianshu.com/p/7a544cf34bcf 声明:本文已获孔鹏飞 ...

最新文章

  1. iOS开发-NSString去掉所有换行及空格
  2. cf-Global Round2-C. Ramesses and Corner Inversion(思维)
  3. 《软件工程》实验报告——需求获取与分析
  4. 正则表达式-匹配数字范围
  5. vscode快捷替换json格式
  6. WebStorm 预览时把浏览器地址localhost 改成IP
  7. 基线长度中误差的计算_电子战支援实施中的测向技术
  8. 模型审查的4个核心要点
  9. ​EMC存储产品介绍分析(二):大数据利器Isilon (2)
  10. 韩国李世石跟韩国AI大战,2负一胜
  11. 计算机网络与应用在线作业,北航《计算机网络与应用》在线作业一15秋满分答案...
  12. HighNewTech:一文了解计算机思维、数学思维的本质区别,以及算法和程序的认知比较
  13. 架构之美读书笔记之三
  14. Navicat安装与破解
  15. 自写日历(周日历,农历节日节气)
  16. 计算机上word如何批量打印,word批量调页面设置 关于Word如何批量打印
  17. 计算机检索高考投档线,投档分数线是什么意思 低于投档线会被录取吗
  18. 数据结构(六)——间接寻址
  19. 算法之路-圆柱体面积
  20. Linux驱动——mmc数据结构(二)

热门文章

  1. 解决teamview检测为商业用途的方法记录
  2. 手把手带你玩转Spark机器学习-使用Spark进行文本处理
  3. SAXReader解析器
  4. Soui Button学习一
  5. win10易升_win10性能模式是什么?怎么开启?
  6. 墨墨背单词mysql_GitHub - FunStuff/WeChat-applets: 微信小程序小鸡单词
  7. CEEMDAN算法及其应用
  8. 【千律】C++基础:使用动态数组vector初始化自定义类
  9. Python基础之文件和数据格式化
  10. 你熟悉的新华书店,已经变样了 | 数字化案例