BottomNavigationBar/Tabbar生命周期解决方案/首页布局解决方案 原创
BLUESKYHOST
发布于 2021-7-7 11:54
浏览
0收藏
导入
implementation 'com.gitee.blueskyliu:BottomNavigationF:0.0.1'
bottomNavigationF
这个组件提供类似flutter的scaffold小部件的解决方案
提供了 顶部导航 导航点击事件以及 底部切换点击事件
使用案例
红色框圈起来的都可以点击 有监听事件
动态效果
准备
- fractionPage页面
- BottomNavViewModel的类里面的数据模型
- 修改 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
收藏
回复
相关推荐
棒啊,可以把开源链接贴出来,就更好了
我记得发布了 可能忘记了等会我更新
第一个问题,应该就是帖子里说的方法: GetExternalFilesDir(DIRECTORE_DOWNLOADS).getAbsolutePath()就可以了。
第二个问题是Web开发的多线程问题,跟我们这个没有关系。也回答不了
谢谢了
JSUI开发,怎么使用这个导航栏呢?
这是java的 js 不是有吗