CustomDialog——一個多功能、通用、可自定義的Dialog


CustomDialog——一個多功能、通用、可自定義的Dialog

 依賴

compile 'com.github.SiberiaDante:CustomDialog:v1.0.1'

 說明
[CustomDialog]
一、一個萬能的通用支持多功能的Dialog,簡單三步即可實現:

1.只需要傳入自定義的CustomDialog布局和需要設置點擊事件的控件的id即可

CustomDialog customDialog=new CustomDialog(this,
          R.layout.dialog_layout,
          new int[]{R.id.dialog_sure});

2.CustomDialog按鈕的監聽

customDialog.setOnDialogItemClickListener(new CustomDialog.OnCustomDialogItemClickListener() {
    @Override
    public void OnCustomDialogItemClick(CustomDialog dialog, View view) {
      switsh(view.getId()){
        case:R.id.dialog_sure:
          Toast.makeText(MainActivity.this, "確定按鈕被點擊了", Toast.LENGTH_LONG).show();
          break;
      }
    }   });

3.CustomDialog顯示與隱藏

customDialog.show();

customDialog.dismiss();

二、如果你想改變CustomDialog的顯示位置、動畫、控制按鈕點擊是否取消顯示CustomDialog,可以使用以下構造
1.改變CustomDialog動畫

/**
* @param context
* @param layoutResID 自己定義的布局
* @param listenedItems 需要設置點擊事件的資源id
* @param animationResId dialog 動畫,如果不使用自己的,則傳0
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, int animationResId) {
  super(context, R.style.Custom_Dialog_Style); //dialog的樣式
  this.context = context;
  this.mLayoutResId = layoutResID;
  this.mListenedItems = listenedItems;
  this.mAnimationResId = animationResId;
}

2. 控制點擊CustomDialog后是否自動取消顯示CustomDialog

/**
* @param context
* @param layoutResID 自己定義的布局
* @param listenedItems 需要設置點擊事件的資源id
* @param isDismiss 按鈕點擊后是否默認取消dialog {@code true}取消 {@code false} 不取消
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, boolean isDismiss) {
  super(context, R.style.Custom_Dialog_Style); //dialog的樣式
  this.context = context;
  this.mLayoutResId = layoutResID;
  this.mListenedItems = listenedItems;
  this.mIsDismiss = isDismiss;
}

3.改變CustomDialog的顯示位置,同時可以控制點擊CustomDialog后是否自動取消顯示CustomDialog

/**
* @param context
* @param layoutResID 自己定義的布局
* @param listenedItems 需要設置點擊事件的資源id
* @param isDismiss 按鈕點擊后是否默認取消dialog {@code true}取消 {@code false} 不取消
* @param position dialog 顯示位置,默認CENTER,不設置時可以傳0
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, boolean isDismiss, int position) {
  super(context, R.style.Custom_Dialog_Style); //dialog的樣式
  this.context = context;
  this.mLayoutResId = layoutResID;
  this.mListenedItems = listenedItems;
  this.mPosition = position;
}

4.可以同時改變CustomDialog動畫、顯示位置、按鈕點擊是否取消顯示CustomDialog

/**
* 滿足你各種需求
*
* @param context
* @param layoutResID 自己定義的布局
* @param listenedItems 需要設置點擊事件的資源id
* @param animationResId dialog 動畫,如果不使用自己的,則傳0
* @param isDismiss 按鈕點擊后是否默認取消dialog {@code true}取消 {@code false} 不取消
* @param position dialog 顯示位置,默認CENTER,不設置時可以傳0
*/
public CustomDialog(Context context, int layoutResID, int[] listenedItems, int animationResId, boolean isDismiss, int position) {
  super(context, R.style.Custom_Dialog_Style); //dialog的樣式
  this.context = context;
  this.mLayoutResId = layoutResID;
  this.mListenedItems = listenedItems;
  this.mAnimationResId = animationResId;
  this.mIsDismiss = isDismiss;
  this.mPosition = position;
}

其他幾個常用Dialog,可以直接拿來用,不需要單獨寫布局

1.[EnsureDialog]:確認Dialog

 

EnsureDialog ensureDialog = new EnsureDialog(this).builder()
                    .setGravity(Gravity.CENTER)//默認居中,可以不設置
                    .setTitle("這里是一個標題", getResources().getColor(R.color.black))//可以不設置標題顏色,默認系統顏色
                    .setCancelable(false)
                    .setSubTitle("這是一個副標題")
                    .setIncon(R.mipmap.tip_icon)//不設置圖標,默認沒有圖標
                    .setNegativeButton("取消", new View.OnClickListener() {//可以選擇設置顏色和不設置顏色兩個方法
                          @Override
                          public void onClick(View view) {

                            }
                          })
                    .setPositiveButton("確認", getResources().getColor(R.color.red), new View.OnClickListener() {//可以選擇設置顏色和不設置顏色兩個方法
                          @Override
                          public void onClick(View view) {
                              ensureDialog.dismiss();

                              }
                          });

ensureDialog.show();

2.[BottomPopupWindow]:仿IOS底部彈窗Dialog

 

new BottomPopupWindow(this).builder()
      .setTitle("選擇").setCancelable(false).setCanceled(true)
      .addSheetItem("相機", BottomPopupWindow.SheetItemColor.Blue, new BottomPopupWindow.OnSheetItemClickListener() {
      @Override
      public void onClick(int which) {
        }
      })
      ...//可以addSheetItem多個item
      .addSheetItem("相冊", BottomPopupWindow.SheetItemColor.Blue, new BottomPopupWindow.OnSheetItemClickListener() {
      @Override
      public void onClick(int which) {
        }
      }).show();

* [EditDialog]:帶EditText確認Dialog

 

final EditDialog dialog = new EditDialog(this).builder();
dialog.setTitle("可編輯Dialog");
dialog.setCancelable(false);
dialog.setNegativeButton("取消", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      }
    });
dialog.setPositiveButton("確定", new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      final String msg = dialog.getMsg();
      Toast.makeText(MainActivity.this, "輸入內容為:" + msg, Toast.LENGTH_LONG).show();
      dialog.dismiss();
      }
    });
dialog.show();

堆碼不易,star支持,萬分感謝
歡迎關注:
Github 地址:https://github.com/SiberiaDante/CustomDialog
[TitleLayout——一個輕松實現標題欄的]
[Android開發必備經典收藏集(整理中)]
[Android開發常備工具整理中]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM