单Activity多Fragment模式快速构建一个App

本文介绍了如何利用单Activity多Fragment模式快速构建一个App。通过MainActivity+ViewPager+Fragment实现一级界面,ClickButtonActivity+Fragment处理所有跳转,以及通过ViewPager+TabIndicator+Fragment创建多个滑动界面。此外,还分享了底部导航栏和Fragment工厂类的实现细节,旨在简化代码并提高可维护性。

前言

自从出了Fragment之后,我便对它情有独钟。从我开始的学习,到现在我做了多个app,我一直在使用Fragment,并且形成了我自己的app架构模式“单Activity多Fragment”,即使用一个Activity多个Fragment去构建一个App的整体架构,这样的好处多多,接下来我会一一介绍。我记得我有一个App其中就3个Activity、100多个Fragment。我已经用这种方式实现4个app了,在经过多个app之后,我的这种模式也在一步步的完善,但是毕竟我自己的水平有限,所以其中也有好些不合理的地方,因此这次我将它分享出来,这次我仅仅做一些关于这个架构的解释说明,后续我会将一些比较热门的技术陆续加入(比如RxJava,retrofit等等),让这个app能够更加完善。希望大家能够多多star,同时更希望大家能够多多拍砖让我不断的进步。
github地址:SimpleApp

APP演示

这里写图片描述

原理简述

正如你上面看到的App,其中只有三个Activity,一个BaseActivity,一个MainActivity,一个ClickButtonActivity。看下项目截图
这里写图片描述

  • MainActivity+ViewPager+Fragment构建三个一级界面
    • MainActivity会承载最主要的三个界面:首页、停车场、我的,而这三个界面都是Fragment,这就利用ViewPager实现了单Activity多Fragment。
  • ClickButtonActivity+Fragment构建跳转界面(这个是核心)
    • 我的任何界面的跳转(比如首界面中四个中心的跳转),只要是通过点击界面上控件跳转的操作,都是跳转的同一个Activity—>ClickButtonActivity,只是每次跳转时我会携带这个点击控件的资源id值,然后我会在ClickButtonActivity里面根据传递过来的资源id值去加载不同的Fragment。
  • 父Fragment通过Viewpager镶嵌多个子Fragment
    • 通过ViewPager+TabIndicator+Fragment实现多个滑动界面

原理详细代码实现

底部导航栏的实现

MainActivity+ViewPager+Fragment+RadioGroup实现底部导航栏

1. 定义xml文件

这里写图片描述

2. MainActivity

这里面比较简单就是给RadioGroup设置一个点击监听,然后根据点击的不同item设置ViewPager当前显示的Fragment界面,这里需要注意 viewpager.setCurrentItem(0, false)这个方法中的第二个参数,如果是true那么ViewPager会有切换动画,false则没有,大家可以试试看。还有这里我自定义了一个不可以滑动的ViewPager—NoScrollViewPager,这个大家可以根据实际需求设计。如果设置可以滑动的话,那么需要根据ViewPager的滑动去改变RadioButton的颜色。同样给ViewPager设置监听然后相应的改变RadioButton的值就好了。

    @Override
    protected void 
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值