久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

android dialog根據(jù)彈窗等級排序顯示的示例代碼

瀏覽:79日期:2022-09-22 08:49:09

背景:由于主界面可能彈窗很多彈窗,需求要求某個dialog必須在前面顯示,如果再消失監(jiān)聽中,線性判斷,每個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)); }}

添加集合中要根據(jù)等級排序

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消失監(jiān)聽,整理集合,判斷最上層dialog 和等待隊列dialog等級對比

@Overridepublic 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; } DialogLevelModel tempModel = waitList.get(waitList.size() -1); if (getTopShowingDialog() == null) { realShow(tempModel); } else if (tempModel.level >= getTopShowingDialog().level) { realShow(tempModel); } else { break; } }}

調(diào)用:

for(int i = 0;i<15;i++){ final int level2 = (int)(1+Math.random()*1000); final Dialog dialog2 = showCommonDialog('content:level-'+level2); Log.e('dialoglevl','level:'+level2); if(i ==13){ dialogLevelManager.showDelay(level2,2000,dialog2,MainActivity.this); continue; } if(i ==14){ dialogLevelManager.showDelay(level2,3000,dialog2,MainActivity.this); continue; } dialogLevelManager.show(level2,dialog2,MainActivity.this);}

結(jié)果展示:

android dialog根據(jù)彈窗等級排序顯示的示例代碼

這里只是單個activity中添加排列顯示dialog的部分重要代碼,要想要全部代碼,下面github

DialogLevel如果感覺有用,請star哦

到此這篇關(guān)于android dialog根據(jù)彈窗等級排序顯示的文章就介紹到這了,更多相關(guān)android dialog彈窗等級排序顯示內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 久久伊人成人网 | 精品美女在线观看视频在线观看 | 色婷婷综合在线 | 亚洲国产精品99久久久久久久久 | 国产精品久久久久久久午夜 | 蜜桃av在线播放 | 国产精品一区在线观看你懂的 | 久久艹久久 | 中文字幕 在线观看 | 欧美第一区 | 99精品久久久久久久免费 | 欧美一区二区在线播放 | 国产成人精品一区二区三区视频 | 国产免费一区二区三区四区五区 | 国产精品久久久久一区二区三区 | 免费在线黄 | 91精品久久久久久久99 | 色鲁97精品国产亚洲 | 日韩另类| 成人小视频在线观看 | 国产wwwcom| 超碰人人射| 黄色精品视频 | 成人午夜精品 | 成人精品久久 | 日本一区二区三区免费观看 | 成人毛片视频免费 | 国产日韩一区二区三免费高清 | 精品成人免费一区二区在线播放 | av天天操| 99这里只有精品视频 | 成人在线视频播放 | 中文字幕日韩一区二区不卡 | 亚洲精品一区二区 | 国产一区二区三区视频 | 欧美一区永久视频免费观看 | 91成人精品视频 | 欧美激情欧美激情在线五月 | 国产精品亚洲一区二区三区在线 | 日韩欧美国产成人一区二区 | 成人免费淫片aa视频免费 |