没有合适的资源?快使用搜索试试~ 我知道了~
android dialog根据弹窗等级排序显示的示例代码
3 下载量 159 浏览量
2021-01-20
08:33:46
上传
评论
收藏 46KB PDF 举报
温馨提示
试读
2页
背景:由于主界面可能弹窗很多弹窗,需求要求某个dialog必须在前面显示,如果再消失监听中,线性判断,每个dialog都去判断工作量巨大,且不易阅读。所以做了一个弹窗排序的项目。这里只是讲解单个activity中的弹窗排序,demo中还有维护多个activity 弹窗排序,详细看最下面github 做到工具组件化,不侵入原项目代码,无需继承,使用方便。 原理:当有一个dialog添加显示时,判断等级是否大于,大于则显示,否则则添加到等待队列 private void show(int level, Dialog dialog, DialogInterface.OnDismissListene
资源推荐
资源详情
资源评论
android dialog根据弹窗等级排序显示的示例代码根据弹窗等级排序显示的示例代码
背景:由于主界面可能弹窗很多弹窗,需求要求某个dialog必须在前面显示,如果再消失监听中,线性判断,每个dialog都去
判断工作量巨大,且不易阅读。所以做了一个弹窗排序的项目。这里只是讲解单个activity中的弹窗排序,demo中还有维护多
个activity 弹窗排序,详细看最下面github
做到工具组件化,不侵入原项目代码,无需继承,使用方便。
原理:当有一个dialog添加显示时,判断等级是否大于,大于则显示,否则则添加到等待队列
private void show(int level, Dialog dialog, DialogInterface.OnDismissListener onDismissListener){
if(dialog == null){
return;
}
DialogLevelModel topDialog = getTopShowingDialog();
DialogLevelModel inModel = new DialogLevelModel(level, dialog, activity);
new DismissListenerBinder(inModel,this,onDismissListener).bind();
if(topDialog ==null || level >= topDialog.level){
realShow(inModel);
}else {
waitList.sortAdd(new DialogLevelModel(level, dialog, activity));
}
}
添加集合中要根据等级排序
public boolean sortAdd(DialogLevelModel inModel){
Log.e("DLArrayList","add---"+inModel.level);
int lastSize = size();
if(lastSize == 0){
return super.add(inModel);
}
int index = 0;
for (int i = size()-1; i >=0; i--){
DialogLevelModel temp = get(i);
if(inModel.level >= temp.level){
index = i+1;
break;
}
}
super.add(index,inModel);
return true;
}
显示的时候,判断activity是否存在,整理集合
private void realShow(DialogLevelModel dialogLevelModel){
waitList.remove(dialogLevelModel);
showList.add(dialogLevelModel);
if(dialogLevelModel.activity != null && dialogLevelModel.activity.get() != null && !dialogLevelModel.activity.get().isFinishing()){
dialogLevelModel.dialog.show();
}else{
destory();
}
}
收到dialog消失监听,整理集合,判断最上层dialog 和等待队列dialog等级对比
@Override
public void onDismiss(DialogLevelModel dialogLevelModel) {
for(int i = showList.size()-1;i>=0;i--){
if(showList.get(i).dialog == dialogLevelModel.dialog){
showList.remove(i);
break;
}
}
boolean flag =true;
while (flag) {
if(waitList.size() == 0){
break;
资源评论
weixin_38504089
- 粉丝: 6
- 资源: 948
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功