美文网首页
关于底部导航BottomBar的设计思路

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

作者: 512DIDIDI | 来源:发表于2018-07-25 20:54 被阅读0次
    • 设计思路
      1. 设计好底部导航与内容页面的布局文件.
      2. 创建java Bean类BottomTabBean存储底部导航的tab
      3. 创建frament的派生类BaseItemContainer实现内容页面容器.
      4. 使用简单工厂模式实现tab与内容页面的映射生成LinkedHashMap<BottomTabBean, ItemContainer>.
      5. 创建BaseFragment继承自fragment,在这里可以完成对tab点击事件的监听以及内容页面的转换.
      6. 创建具体内容页面实现类IndexContainer继承自BaseItemContainer,完成对当前页面的事件处理.
      7. 继续创建具体内容页面...
      8. 创建具体实现类IndexFragment继承自BaseFragment,添加tab以及IndexContainer实例,

    • 具体实现demo:

      1. 设计布局文件:
      底部导航栏:bottom_item_icon_title_layout.xml 底部导航栏与内容页面: delegate_bottom.xml

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

      1. 创建javaBean类存储底部导航tab
      javaBean类: BottomTabBean.java
      1. 创建frament的派生类实现内容页面容器.
      内容页面容器: BottomItemDelegate.java

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

      1. 使用简单工厂模式实现tab与内容页面的映射生成LinkedHashMap<BottomTabBean, BottomItemDelegate>.
      ItemFactory.java

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

      1. 创建BaseFragment继承自fragment,在这里可以完成对tab点击事件的监听以及内容页面的转换.
      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,完成对当前页面的事件处理.
      具体内容页面实现类: HomeItemDelegate.java
      1. 重复步骤6,创建另外的fragment
      2. 创建具体实现类PocketBottomDelegate继承自BaseBottomDelegate,添加tab以及具体内容页面实例
      PocketBottomDelegate.java
      • 实现抽象方法setItems()来绑定tab与内容页面的关系,并返回LinkedHashMap<>.
      • 实现抽象方法setPressColor()来实现按下tab的颜色.
      • 实现抽象方法setIndexDelegate()来实现默认加载页面.

    • 最终效果

    相关文章

      网友评论

          本文标题:关于底部导航BottomBar的设计思路

          本文链接:https://www.haomeiwen.com/subject/ycymmftx.html