BottomNavigationBar/Tabbar生命周期解决方案/首页布局解决方案 原创

发布于 2021-7-7 11:54
浏览
0收藏

导入

implementation 'com.gitee.blueskyliu:BottomNavigationF:0.0.1'

bottomNavigationF

这个组件提供类似flutter的scaffold小部件的解决方案
提供了 顶部导航 导航点击事件以及 底部切换点击事件

使用案例

红色框圈起来的都可以点击 有监听事件

BottomNavigationBar/Tabbar生命周期解决方案/首页布局解决方案-开源基础软件社区
动态效果
BottomNavigationBar/Tabbar生命周期解决方案/首页布局解决方案-开源基础软件社区

准备

  1. fractionPage页面
  2. BottomNavViewModel的类里面的数据模型
  3. 修改 MainAbility 继承类为FractionAbility

初始化实例

根据实际情况修改你们的需求

   DirectionalLayout parse =(DirectionalLayout) LayoutScatter.getInstance(getContext()).parse(ResourceTable.Layout_ability_main, null, false);
        AppBar appBar = new AppBar();
        appBar.setTitle("自定义导航");
        appBar.setLeadingId(ResourceTable.Media_arrow_left);
       
        BottomNavigation bottomNavigation = new BottomNavigation();
        BottomNavViewModel bottomNavViewModel = new BottomNavViewModel();
        bottomNavigation.setBottomNavItems(bottomNavViewModel.initBottomNavFractions());
        List<Fraction> fractions = bottomNavViewModel.initBottomNavFractionsBody(this);
        Body body = new Body();
        body.setFractions(fractions);
//        appBar
        Scaffold init = new Scaffold((((FractionAbility) getAbility())),appBar, body, bottomNavigation).init();
        Component scaffold = init.getScaffold();
        parse.addComponent(scaffold);
        init.setOnNavClickListener(new OnNavClickListener() {
            @Override
            public void onLeading() {
                LogUtil.info("ontapNav", "点击了");
            }
        });
        init.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onTap(int index) {
                LogUtil.info("自定义监听", Integer.toString(index));
            }
        });
        setUIContent(parse);

内置 解决方案 路由跳转

工具类RouterUtil

  • 跳转 Ability页参数配置
方法名 参数 选填参数
navigate AbilitySlice abilitySlice 当前页, Class classTo 目标页,Map<String,Object> map Map<String,Object> map
  • 跳转 AbilitySlice 页参数配置 即 跳转页面
方法名 参数 选填参数
navigate AbilitySlice abilitySlice当前页 , AbilitySlice abilitySliceTo 目标页,Map<String,Object> map Map<String,Object> map

tabbar工具方法

  • 获取方法
    Scaffold new出的对象 掉用 getFractionUtil 获取工具
    示例代码仅供参考
 Scaffold init = new Scaffold((((FractionAbility) getAbility())),appBar, body, bottomNavigation).init();
        Component scaffold = init.getScaffold();
        FractionUtil fractionUtil = init.getFractionUtil();
        fractionUtil.show(1);//打开底部导航索引为1

当前项目遇到的问题

问题文件 package com.llt.bottomnavigationf 包 中的Scaffold类

        /**
         * 初始化 数据 fraction 这里放到 asyncDispatch异步线程中 就没问题不会出现闪退问题
         */
//问题原因是 FractionUtil类中的 initTabberPage方法 submit操作导致的 
        abilitySlice.getUITaskDispatcher().asyncDispatch(new Runnable() {
            @Override
            public void run() {
                fractionUtil=new FractionUtil(
                        body.getFractions(),
                        currentSaveIndex,
                        abilitySlice,
                        ResourceTable.Id_scaffold_main_content);
            }
        });

谁知道具体原因的可以联系我 如果方便 群号 953344438

项目地址 https://gitee.com/blueskyliu/BottomNavigationF

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2021-7-15 18:05:50修改
5
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐