1. 程式人生 > >Android 多種簡單的彈出框樣式設定

Android 多種簡單的彈出框樣式設定

簡介

這是一個基於AlertDialog和Dialog這兩個類封裝的多種彈出框樣式,其中提供各種簡單樣式的彈出框使用說明。同時也可自定義彈出框。

專案地址:https://github.com/Liumce/jjdxm_dialogui

特性

1.使用鏈式開發程式碼簡潔明瞭
2.所有的彈出框樣式都在DialogUIUtils這個類中完成,方便查閱方法
3.可以自定義彈出框字型樣式
4.簡單的類似載入框的樣式可以支援兩種主題更改預設白色和灰色

截圖








demo下載

demo apk下載

Download or grab via Maven:

<dependency
>
<groupId>com.dou361.dialogui</groupId> <artifactId>jjdxm-dialogui</artifactId> <version>x.x.x</version> </dependency>

or Gradle:

compile 'com.dou361.dialogui:jjdxm-dialogui:x.x.x'

歷史版本:

compile 'com.dou361.dialogui:jjdxm-dialogui:1.0.1'
compile 'com.dou361.dialogui:jjdxm-dialogui:1.0.0'

jjdxm-dialogui requires at minimum Java 9 or Android 2.3.


架包的打包引用以及衝突解決

程式碼混淆

根據你的混淆器配置和使用,您可能需要在你的proguard檔案內配置以下內容:

-keep class com.dou361.** {
*;
}

AndroidStudio程式碼混淆注意的問題

快速開始

step1

如果需要使用toast類,採用單例模式的,多次呼叫toast後只會顯示一個,需要初始化DialogUIUtils類,否則會拋異常,使用前初始化即可,程式碼如下

DialogUIUtils.init(appContext);

step2

如果不需要使用toast類,可以不操作step1,直接使用相對於的彈出框即可。以下分別是部分彈出框的呼叫程式碼案例。

自定義彈出框

/**
 * 自定義彈出框 預設居中可取消可點選
 *
 * @param context     上下問
 * @param contentView 自定義view
 * @return
 */
public static BuildBean showCustomAlert(Context context, View contentView)

/**
 * 自定義彈出框 預設可取消可點選
 *
 * @param context     上下文
 * @param contentView 自定義view
 * @param gravity     顯示window的位置例如Gravity.center
 * @return
 */
public static BuildBean showCustomAlert(Context context, View contentView, int gravity)

/***
 * 自定義彈出框
 *
 * @param context          上下文
 * @param contentView      自定義view
 * @param gravity          顯示window的位置例如Gravity.center
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @return
 */
public static BuildBean showCustomAlert(Context context, View contentView, int gravity, boolean cancleable, boolean outsideTouchable)

具體使用

View rootView = View.inflate(activity, R.layout.custom_dialog_layout, null);
DialogUIUtils.showCustomAlert(this, rootView).show();

彈出toast

/**
 * 彈出toast 預設白色背景可取消可點選
 *
 * @param context 上下文
 * @param msg     提示文字
 */
public static BuildBean showToastTie(Context context, CharSequence msg) 

/**
 * 彈出toast 預設可取消可點選
 *
 * @param context   上下文
 * @param msg       提示文字
 * @param isWhiteBg true為白色背景false為灰色背景
 */
public static BuildBean showToastTie(Context context, CharSequence msg, boolean isWhiteBg) 

/**
 * 彈出toast
 *
 * @param context          上下文
 * @param msg              提示文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param isWhiteBg        true為白色背景false為灰色背景
 */
public static BuildBean showToastTie(Context context, CharSequence msg, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg)

具體使用

DialogUIUtils.showToastTie(this, "載入中...").show();

橫向載入框

/**
 * 橫向載入框 預設白色背景可取消可點選
 *
 * @param context 上下文
 * @param msg     提示文字
 */
public static BuildBean showLoadingHorizontal(Context context, CharSequence msg)

/**
 * 橫向載入框 預設可取消可點選
 *
 * @param context   上下文
 * @param msg       提示文字
 * @param isWhiteBg true為白色背景false為灰色背景
 */
public static BuildBean showLoadingHorizontal(Context context, CharSequence msg, boolean isWhiteBg)

/**
 * 橫向載入框
 *
 * @param context          上下文
 * @param msg              提示文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param isWhiteBg        true為白色背景false為灰色背景
 */
public static BuildBean showLoadingHorizontal(Context context, CharSequence msg, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg)

具體使用

DialogUIUtils.showLoadingHorizontal(this, "載入中...").show();

md風格橫向載入框

/**
 * md風格橫向載入框 預設白色背景可取消可點選
 *
 * @param context 上下文
 * @param msg     提示文字
 */
public static BuildBean showMdLoadingHorizontal(Context context, CharSequence msg)

/**
 * md風格橫向載入框 預設可取消可點選
 *
 * @param context   上下文
 * @param msg       提示文字
 * @param isWhiteBg true為白色背景false為灰色背景
 */
public static BuildBean showMdLoadingHorizontal(Context context, CharSequence msg, boolean isWhiteBg) 

/**
 * md風格橫向載入框
 *
 * @param context          上下文
 * @param msg              提示文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param isWhiteBg        true為白色背景false為灰色背景
 */
public static BuildBean showMdLoadingHorizontal(Context context, CharSequence msg, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg) 

具體使用

DialogUIUtils.showMdLoadingHorizontal(this, "載入中...").show();

豎向載入框

/**
 * 豎向載入框  預設白色背景可取消可點選
 *
 * @param context 上下文
 * @param msg     提示文字
 */
public static BuildBean showLoadingVertical(Context context, CharSequence msg) 

/**
 * 豎向載入框 預設可取消可點選
 *
 * @param context   上下文
 * @param msg       提示文字
 * @param isWhiteBg true為白色背景false為灰色背景
 */
public static BuildBean showLoadingVertical(Context context, CharSequence msg, boolean isWhiteBg) 

/**
 * 豎向載入框
 *
 * @param context          上下文
 * @param msg              提示文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param isWhiteBg        true為白色背景false為灰色背景
 */
public static BuildBean showLoadingVertical(Context context, CharSequence msg, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg) 

具體使用

DialogUIUtils.showLoadingVertical(this, "載入中...").show();

md風格豎向載入框

/**
 * md風格豎向載入框  預設白色背景可取消可點選
 *
 * @param context 上下文
 * @param msg     提示文字
 */
public static BuildBean showMdLoadingVertical(Context context, CharSequence msg)

/**
 * md風格豎向載入框 預設可取消可點選
 *
 * @param context   上下文
 * @param msg       提示文字
 * @param isWhiteBg true為白色背景false為灰色背景
 */
public static BuildBean showMdLoadingVertical(Context context, CharSequence msg, boolean isWhiteBg)

/**
 * md風格豎向載入框
 *
 * @param context          上下文
 * @param msg              提示文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param isWhiteBg        true為白色背景false為灰色背景
 */
public static BuildBean showMdLoadingVertical(Context context, CharSequence msg, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg)

具體使用

DialogUIUtils.showMdLoadingVertical(this, "載入中...").show();

md風格彈出框

/***
 * md風格彈出框 預設可取消可點選
 *
 * @param activity 所在activity
 * @param title    標題 不傳則無標題
 * @param msg      訊息
 * @param listener 事件監聽
 * @return
 */
public static BuildBean showMdAlert(Activity activity, CharSequence title, CharSequence msg, DialogUIListener listener)

/***
 * md風格彈出框
 *
 * @param activity         所在activity
 * @param title            標題 不傳則無標題
 * @param msg              訊息
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showMdAlert(Activity activity, CharSequence title, CharSequence msg, boolean cancleable, boolean outsideTouchable, DialogUIListener listener)

具體使用

DialogUIUtils.showMdAlert(activity, "標題", "文字內容", new DialogUIListener() {
                @Override
                public void onPositive() {
                    
                }

                @Override
                public void onNegative() {
                    
                }

            }).show();

md風格多選框

/**
 * md風格多選框  預設可取消可點選
 *
 * @param activity     所在activity
 * @param title        標題 不傳則無標題
 * @param words        訊息陣列
 * @param checkedItems 預設選中項
 * @param listener     事件監聽
 */
public static BuildBean showMdMultiChoose(Activity activity, CharSequence title, CharSequence[] words, boolean[] checkedItems, DialogUIListener listener)

/***
 * md風格多選框
 *
 * @param activity         所在activity
 * @param title            標題 不傳則無標題
 * @param words            訊息陣列
 * @param checkedItems     預設選中項
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showMdMultiChoose(Activity activity, CharSequence title, CharSequence[] words, boolean[] checkedItems, boolean cancleable, boolean outsideTouchable, DialogUIListener listener)

具體使用

String[] words = new String[]{"1", "2", "3"};
            boolean[] choseDefault = new boolean[]{false, false, false};
            DialogUIUtils.showMdMultiChoose(activity, "標題", words, choseDefault, new DialogUIListener() {
                @Override
                public void onPositive() {

                }

                @Override
                public void onNegative() {

                }
            }).show();

單選框

/**
 * 單選框  預設可取消可點選
 *
 * @param activity      所在activity
 * @param title         標題 不傳則無標題
 * @param defaultChosen 預設選中項
 * @param words         訊息陣列
 * @param listener      事件監聽
 */
public static BuildBean showSingleChoose(Activity activity, CharSequence title, int defaultChosen, CharSequence[] words, DialogUIItemListener listener) 

/**
 * 單選框
 *
 * @param activity         所在activity
 * @param title            標題 不傳則無標題
 * @param defaultChosen    預設選中項
 * @param words            訊息陣列
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 */
public static BuildBean showSingleChoose(Activity activity, CharSequence title, int defaultChosen, CharSequence[] words, boolean cancleable, boolean outsideTouchable, DialogUIItemListener listener) 

具體使用

String[] words2 = new String[]{"1", "2", "3"};
                DialogUIUtils.showSingleChoose(activity, "單選", 0, words2, new DialogUIItemListener() {
                    @Override
                    public void onItemClick(CharSequence text, int position) {
                        showToast(text + "--" + position);
                    }
                }).show();

提示彈出框

/**
 * 提示彈出框 預設可取消可點選
 *
 * @param activity 所在activity
 * @param title    標題 不傳則無標題
 * @param listener 事件監聽
 */
public static BuildBean showAlert(Activity activity, CharSequence title, CharSequence msg, DialogUIListener listener)

/**
 * 提示彈出框
 *
 * @param activity         所在activity
 * @param title            標題 不傳則無標題
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 */
public static BuildBean showAlert(Activity activity, CharSequence title, CharSequence msg, boolean cancleable, boolean outsideTouchable, DialogUIListener listener)

具體使用

DialogUIUtils.showAlert(activity, "標題", "文字內容", new DialogUIListener() {
                @Override
                public void onPositive() {
                    
                }

                @Override
                public void onNegative() {
                    
                }

            }).show();

橫向彈出框

/**
 * 橫向彈出框  預設可取消可點選
 *
 * @param activity 所在activity
 * @param title    標題 不傳則無標題
 * @param msg      訊息
 * @param listener 事件監聽
 */
public static BuildBean showAlertHorizontal(Context activity, CharSequence title, CharSequence msg, DialogUIListener listener) 

/**
 * 橫向彈出框
 *
 * @param activity         所在activity
 * @param title            標題 不傳則無標題
 * @param msg              訊息
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 */
public static BuildBean showAlertHorizontal(Context activity, CharSequence title, CharSequence msg, boolean cancleable, boolean outsideTouchable, DialogUIListener listener)

具體使用

DialogUIUtils.showAlertHorizontal(activity, "標題", "文字內容", new DialogUIListener() {
                @Override
                public void onPositive() {
                    
                }

                @Override
                public void onNegative() {
                    
                }

            }).show();

豎向彈出框

/**
 * 豎向彈出框  預設可取消可點選
 *
 * @param activity 所在activity
 * @param title    標題 不傳則無標題
 * @param msg      訊息
 * @param listener 事件監聽
 */
public static BuildBean showAlertVertical(Context activity, CharSequence title, CharSequence msg, DialogUIListener listener)

/**
 * 豎向彈出框
 *
 * @param activity         所在activity
 * @param title            標題 不傳則無標題
 * @param msg              訊息
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 */
public static BuildBean showAlertVertical(Context activity, CharSequence title, CharSequence msg, boolean cancleable, boolean outsideTouchable, DialogUIListener listener)

具體使用

DialogUIUtils.showAlertVertical(activity, "標題", "文字內容", new DialogUIListener() {
                @Override
                public void onPositive() {
                    
                }

                @Override
                public void onNegative() {
                    
                }

            }).show();

中間彈出列表

/**
 * 中間彈出列表 預設可取消可點選
 *
 * @param context  上下文
 * @param words    素組集合
 * @param listener 事件監聽
 * @return
 */
public static BuildBean showCenterSheet(Context context, List<? extends CharSequence> words, DialogUIItemListener listener)

/***
 * 中間彈出列表
 *
 * @param context          上下文
 * @param words            素組集合
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showCenterSheet(Context context, List<? extends CharSequence> words, boolean cancleable, boolean outsideTouchable, DialogUIItemListener listener)

具體使用

List<String> strings = new ArrayList<>();
            strings.add("1");
            strings.add("2");
            strings.add("3");
            DialogUIUtils.showCenterSheet(activity, strings, new DialogUIItemListener() {
                @Override
                public void onItemClick(CharSequence text, int position) {
                }

                @Override
                public void onBottomBtnClick() {
                }
            }).show();

帶取消的底部彈出列表

/**
 * 帶取消的底部彈出列表 預設可取消可點選
 *
 * @param context   上下文
 * @param words     素組集合
 * @param bottomTxt 底部按鈕文字
 * @param listener  事件監聽
 * @return
 */
public static BuildBean showBottomSheetAndCancel(Context context, List<? extends CharSequence> words, CharSequence bottomTxt, DialogUIItemListener listener)

/***
 * 帶取消的底部彈出列表
 *
 * @param context          上下文
 * @param words            素組集合
 * @param bottomTxt        底部按鈕文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showBottomSheetAndCancel(Context context, List<? extends CharSequence> words, CharSequence bottomTxt, boolean cancleable, boolean outsideTouchable, DialogUIItemListener listener) 

具體使用

List<String> strings = new ArrayList<>();
            strings.add("1");
            strings.add("2");
            strings.add("3");
            DialogUIUtils.showBottomSheetAndCancel(activity, strings, "取消", new DialogUIItemListener() {
                @Override
                public void onItemClick(CharSequence text, int position) {
                }

                @Override
                public void onBottomBtnClick() {
                }
            }).show();

底部彈出列表

/**
 * 底部彈出列表 預設可取消可點選
 *
 * @param context  上下文
 * @param datas    集合需要BottomSheetBean物件
 * @param listener 事件監聽
 * @return
 */
public static BuildBean showBottomSheet(Activity context, List datas, DialogUIItemListener listener)

/***
 * 底部彈出列表
 *
 * @param context          上下文
 * @param datas            集合需要BottomSheetBean物件
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showBottomSheet(Activity context, List datas, boolean cancleable, boolean outsideTouchable, DialogUIItemListener listener)

具體使用

List<BottomSheetBean> datass = new ArrayList<>();
            datass.add(new BottomSheetBean(0, "1"));
            datass.add(new BottomSheetBean(0, "2"));
            datass.add(new BottomSheetBean(0, "3"));
            DialogUIUtils.showBottomSheet(this, datass, new DialogUIItemListener() {
                @Override
                public void onItemClick(CharSequence text, int position) {

                }
            }).show();

輸入框

/**
 * 輸入框 預設可取消可點選
 *
 * @param context   上下文
 * @param title     標題
 * @param hint1     第一個文字框提示語
 * @param hint2     第二個文字框提示語
 * @param firstTxt  第一個按鈕文字
 * @param secondTxt 第二個按鈕文字
 * @param listener  事件監聽
 * @return
 */
public static BuildBean showAlertInput(Context context, CharSequence title, CharSequence hint1, CharSequence hint2, CharSequence firstTxt, CharSequence secondTxt, DialogUIListener listener)

/***
 * 輸入框
 *
 * @param context          上下文
 * @param title            標題
 * @param hint1            第一個文字框提示語
 * @param hint2            第二個文字框提示語
 * @param firstTxt         第一個按鈕文字
 * @param secondTxt        第二個按鈕文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showAlertInput(Context context, CharSequence title, CharSequence hint1, CharSequence hint2, CharSequence firstTxt, CharSequence secondTxt, boolean cancleable, boolean outsideTouchable, DialogUIListener listener)

具體使用

DialogUIUtils.showAlertInput(activity, "登入", "請輸入使用者名稱", "請輸入密碼", "登入", "取消", new DialogUIListener() {
                @Override
                public void onPositive() {

                }

                @Override
                public void onNegative() {

                }

                @Override
                public void onGetInput(CharSequence input1, CharSequence input2) {
                }
            }).show();

md風格豎向底部彈出列表

/**
 * md風格豎向底部彈出列表 預設可取消可點選
 *
 * @param context   上下文
 * @param title     標題
 * @param datas     集合需要BottomSheetBean物件
 * @param bottomTxt 底部item文字
 * @param listener  事件監聽
 * @return
 */
public static BuildBean showMdBottomSheetVertical(Context context, CharSequence title, List datas, CharSequence bottomTxt, DialogUIItemListener listener)

/***
 * md風格豎向底部彈出列表
 *
 * @param context          上下文
 * @param title            標題
 * @param datas            集合需要BottomSheetBean物件
 * @param bottomTxt        底部item文字
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showMdBottomSheetVertical(Context context, CharSequence title, List datas, CharSequence bottomTxt, boolean cancleable, boolean outsideTouchable, DialogUIItemListener listener) 

具體使用

List<BottomSheetBean> datass = new ArrayList<>();
            datass.add(new BottomSheetBean(0, "1"));
            datass.add(new BottomSheetBean(0, "2"));
            datass.add(new BottomSheetBean(0, "3"));
            DialogUIUtils.showMdBottomSheetVertical(this, datass, new DialogUIItemListener() {
                @Override
                public void onItemClick(CharSequence text, int position) {

                }
            }).show();

md風格橫向底部彈出列表

/**
 * md風格橫向底部彈出列表 預設可取消可點選
 *
 * @param context          上下文
 * @param title            標題
 * @param datas            集合需要BottomSheetBean物件
 * @param bottomTxt        底部item文字
 * @param columnsNum       列數量
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showMdBottomSheetHorizontal(Context context, CharSequence title, List datas, CharSequence bottomTxt, int columnsNum, DialogUIItemListener listener) 

/***
 * md風格橫向底部彈出列表
 *
 * @param context          上下文
 * @param title            標題
 * @param datas            集合需要BottomSheetBean物件
 * @param bottomTxt        底部item文字
 * @param columnsNum       列數量
 * @param cancleable       true為可以取消false為不可取消
 * @param outsideTouchable true為可以點選空白區域false為不可點選
 * @param listener         事件監聽
 * @return
 */
public static BuildBean showMdBottomSheetHorizontal(Context context, CharSequence title, List datas, CharSequence bottomTxt, int columnsNum, boolean cancleable, boolean outsideTouchable, DialogUIItemListener listener)

具體使用

List<BottomSheetBean> datass = new ArrayList<>();
            datass.add(new BottomSheetBean(0, "1"));
            datass.add(new BottomSheetBean(0, "2"));
            datass.add(new BottomSheetBean(0, "3"));
            DialogUIUtils.showMdBottomSheetHorizontal(this, datass, new DialogUIItemListener() {
                @Override
                public void onItemClick(CharSequence text, int position) {

                }
            }).show();
專案地址: github

作者:jjdxmashl
連結:https://www.jianshu.com/p/1921ce3e34fa
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。