爱吖妹纸——Retrofit+Rx+MVP架构APP体验,福利多多,不容错过
作者说的这个福利,应该是技术福利~本来是给我投稿的一篇文章,不过偏向于介绍项目,就改为每日推荐啦~
https://github.com/nanchen2251/AiYaGirl
本文由陈序员投稿。
陈序员的博客地址:
https://blog.ifmvo.cn/
这是接Android 快速开发(一),封装一个 TopBarBaseActivity之后,作者该系列的第二篇文章~
效果
什么是快速开发嘞,看这个效果
然而实现 BottomTab + ViewPager 的效果我只用了这么几行代码:
添加 CenterView 也很简单,只需重写 getCenterView 方法并返回你想添加的 View。
为什么会这么简单呢,因为我把重复性的代码都封装在 父类 BottomTabBaseActivity 里面,这样的话,我们想实现 BottomTab + ViewPager 的效果只需实现三个方法,这样就可以大大提高我们的效率。爽YY~~~ 接下来我们一起实现这个 BottomTabBaseActivity。
首先我介绍一下我自定义一个 BottomTabView,用于实现 Tab 效果
https://github.com/ifmvo/BottomTabView
它提供两个 setTabItemViews 方法,用于初始化 TabItem 的数据和 CenterView
还提供 setOnSecondSelectListener ,当 TabItemView 已经被选择并再次点击时,会出发此监听,用于实现某些 App 二次点击 TabItemView 刷新功能。
你可以直接粘贴项目中这两个文件即可
BottomTabView.java、view_tab_item.xml
https://github.com/ifmvo/BottomTabView
下面利用 BottomTabView 实现我们想要的 BottomTabBaseActivity
搭建整体布局
我们新建两个文件 BottomTabBaseActivity.java 和 activity_base_bottom_tab.xml,并把 BottomTabView.java 和 view_tab_item.xml 复制到我们的项目中
activity_base_bottom_tab.xml
BottomTabBaseActivity 设置成抽象类,并添加三个方法
我们为什么写两个 abstract 类型的方法呢,我们的思路是这样的:
所以声明两个抽象方法 getTabViews、getFragments ,并在子类去实现,至于 getCenterView 方法可以自行定制,如果需要 CenterView 在子类实现方法即可。
MainActivity 继承自 BottomTabBaseActivity,只需实现两个方法,其他的什么也不需要做。
到这里,整体的布局已经搭建完毕,下面我们来实现功能.
实现底部 Tab
在 BottomTabBaseActivity 中添加:
在 MainActivity 中实现 getTabView 方法
TabItemView 构造方法的参数含义
现在你可以运行一下你的 MainActivity,是不是已经实现了 底部 Tab 的效果。
连接 BottomTabView 和 ViewPager
我们继续。接下来我们将 BottomTabView 和 ViewPager 进行连接,并切换 ViewPager 的页面,以显示不同的 Fragment。
声明、初始化一个 Adapter,并设置到 ViewPager 里面
利用 setOnTabItemSelectListener 方法设置 BottomTabView 的监听器,来切换 ViewPager
用 ViewPager 的 addOnPageChangeListener 方法,使 ViewPager 切换的时候,也同步切换 BottomTabView 的选中位置。
最后一步:实现 getFragments 方法 返回一个 List
当然 TabFragment 需要你自己去实现。 现在你再运行一下你的 MainActivity,是不是已经实现了。
你想一想,以后每个 BottomTab + ViewPager 的界面,只需 让你的 XXActivity extends BottomTabBaseActivity,再实现两个方法就可以了,多爽啊!
添加 CenterView
如果你想添加一个 CenterView 的话,你可以实现 getCenterView
或者这样写比较灵活:
如果你想让 CenterView 的上边界暴露在 BottomTabView 的外面的话,只需修改两处代码:
前提是你要保证 BottomTabView 内部的 CenterView 足够大。
activity_base_bottom_tab.xml
Prefect !~~
GitHub 地址
https://github.com/ifmvo/MatthewBases
无论你是有 Java 基础希望学 Android 开发的程序员,还是想进一步提升能力的 Android 开发者,都可以在这个Udacity & Google 官方参与制作 的课程项目中找到适合自己的成长路径!
*独家硅谷技术课程
*行业领导者设计的实战项目
*一对一学习辅导
*名企颁发学习认证
*毕业直达滴滴面试
如果你有想学习的文章直接留言,我会整理征稿。如果你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可。
欢迎长按下图->识别图中二维码或者扫一扫关注我的公众号: