android dialogは、パチンコのランクに従って表示されるコードの例を示します。


背景:メインインターフェースは弾戸が多いので、あるdialogが前に表示される必要があります。また傍受の中に消えたら、線形的に判断します。各dialogは仕事量が膨大で、読みにくいと判断します。だから、弾戸の並べ替えをしました。ここでは単一のactivityの中のパチンコの並べ替えを説明します。デモの中にはいくつかの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;
  }
  DialogLevelModel tempModel = waitList.get(waitList.size() -1);
  if (getTopShowingDialog() == null) {
   realShow(tempModel);
  } else if (tempModel.level >= getTopShowingDialog().level) {
   realShow(tempModel);
  } else {
   break;
  }
 }
}
呼び出し:

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);
}
結果の展示:

ここは単一のactivityの中にdialogの部分の重要なコードを並べて表示することを添加して、全部のコードがほしいです。
Dialog Levelが役に立ちましたら、starをお願いします。
ここでは、android dialogについて、弾戸の等級によって表示された文章を紹介します。もっと関連するandroid dialog弾戸のランク付けの表示内容は以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。