关于底部导航BottomBar的设计思路

  • 设计思路
    1. 设计好底部导航与内容页面的布局文件.
    2. 创建java Bean类BottomTabBean存储底部导航的tab
    3. 创建frament的派生类BaseItemContainer实现内容页面容器.
    4. 使用简单工厂模式实现tab与内容页面的映射生成LinkedHashMap.
    5. 创建BaseFragment继承自fragment,在这里可以完成对tab点击事件的监听以及内容页面的转换.
    6. 创建具体内容页面实现类IndexContainer继承自BaseItemContainer,完成对当前页面的事件处理.
    7. 继续创建具体内容页面...
    8. 创建具体实现类IndexFragment继承自BaseFragment,添加tab以及IndexContainer实例,

  • 具体实现demo:

    1. 设计布局文件:
    关于底部导航BottomBar的设计思路_第1张图片
    底部导航栏:bottom_item_icon_title_layout.xml
    关于底部导航BottomBar的设计思路_第2张图片
    底部导航栏与内容页面: delegate_bottom.xml

    这里delegate_bottom_container用作内容页面的布局,delegate_bottom_bar即底部导航栏布局

    1. 创建javaBean类存储底部导航tab
    关于底部导航BottomBar的设计思路_第3张图片
    javaBean类: BottomTabBean.java
    1. 创建frament的派生类实现内容页面容器.
    关于底部导航BottomBar的设计思路_第4张图片
    内容页面容器: BottomItemDelegate.java

    这里的PocketDelegate是一个抽象的fragment类,实现View.OnKeyListener接口可实现对物理按键的监听,从而实现快速双击退出app的功能.

    1. 使用简单工厂模式实现tab与内容页面的映射生成LinkedHashMap.
    关于底部导航BottomBar的设计思路_第5张图片
    ItemFactory.java

    使用LinkedHashMap<>可以形成有序的键值对.

    1. 创建BaseFragment继承自fragment,在这里可以完成对tab点击事件的监听以及内容页面的转换.
    关于底部导航BottomBar的设计思路_第6张图片
    关于底部导航BottomBar的设计思路_第7张图片
    关于底部导航BottomBar的设计思路_第8张图片
    BaseFragment.java
    • onCreate()方法中初始化页面,并将在子类实现的setItems()中返回的LinkedHashMap<>存储到ITEMS中,再遍历map,将BottomTabBean和BottomItemDelegate分别对应取出存储到TAB_BEANS和ITEM_DELEGATE列表中.
    • onBindView()方法是父类的自定义方法,用于绑定控件,可以在onCreate()中完成.
    • 对于fragment,推荐github的开源项目fragmentation https://github.com/YoKeyword/Fragmentation
    1. 创建具体内容页面实现类HomeItemDelegate继承自BottomItemDelegate,完成对当前页面的事件处理.
    关于底部导航BottomBar的设计思路_第9张图片
    具体内容页面实现类: HomeItemDelegate.java
    1. 重复步骤6,创建另外的fragment
    2. 创建具体实现类PocketBottomDelegate继承自BaseBottomDelegate,添加tab以及具体内容页面实例
    关于底部导航BottomBar的设计思路_第10张图片
    PocketBottomDelegate.java
    • 实现抽象方法setItems()来绑定tab与内容页面的关系,并返回LinkedHashMap<>.
    • 实现抽象方法setPressColor()来实现按下tab的颜色.
    • 实现抽象方法setIndexDelegate()来实现默认加载页面.

  • 最终效果
关于底部导航BottomBar的设计思路_第11张图片

你可能感兴趣的:(关于底部导航BottomBar的设计思路)