安卓系統自帶Dialog

一.ProgressDialog

1.1方法解釋

setMessage  設置彈框的信息   setTitle 設置彈框的標題  setIcon 設置彈框圖標
setIndeterminate  

當設置setIndeterminate(true)參數爲真時,進度條採用不明確顯示進度的‘模糊模式’,即滾輪的進度不是實際文件下載的進度

(false)參數爲假時, 進度條不採用‘模糊模式’,而採用明確顯示進度的‘明確模式’。

setCancelable(false)  dialog彈出後會點擊屏幕或物理返回鍵,dialog不消失
setCanceledOnTouchOutside(false)  dialog彈出後會點擊屏幕,dialog不消失;點擊物理返回鍵dialog消失
setProgressStyle   彈框的樣式設置

setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 設置水平進度條  

setProgressStyle(ProgressDialog.STYLE_SPINNER);// 設置進度條的形式爲圓形轉動的進度條  

1.2實例操作

public class ProgressUtil {

    private static ProgressDialog mDialog;

    private static void createLoadingDialog(Context context) {
        hide();
        mDialog = new ProgressDialog(context);
     mDialog.setMessage("正在上傳照片,請稍等...");
//        mDialog.setTitle("正在上傳數據中");
        mDialog.setIcon(R.drawable.upload);
        //參數爲真時,進度條採用不明確顯示進度的‘模糊模式,即無法查看真實的進度,如果爲false則爲真實進度
        mDialog.setIndeterminate(false);
        //dialog彈出後會點擊屏幕或物理返回鍵,dialog不消失
        mDialog.setCancelable(false);
        //dialog彈出後會點擊屏幕,dialog不消失;點擊物理返回鍵dialog消失
        mDialog.setCanceledOnTouchOutside(false);
        mDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    }

    /**
     * 顯示進度dialog
     * @param context 上下文對象
     * @param
     */
    public static void show(Activity context) {
        if (context == null || context.isFinishing()) return;
        createLoadingDialog(context);
        mDialog.show();
    }

    /**
     * 顯示進度dialog
     * @param context 上下文對象
     * @param message 顯示的message
     */
    public static void show(Activity context, String message) {
        createLoadingDialog(context);
        mDialog.setMessage(message);
        mDialog.show();
    }

    public static void hide() {
        if (mDialog != null && mDialog.isShowing()) {
            mDialog.dismiss();
            mDialog = null;
        }
    }

    public static boolean isShowing() {
        if (mDialog != null) {
            return mDialog.isShowing();
        }
        return false;
    }
}

二.AlertDialog.Builder

2.1方法解釋

 setTitle :爲對話框設置標題
 setIcon :爲對話框設置圖標
 setMessage:爲對話框設置內容
 setView : 給對話框設置自定義樣式
 setItems :設置對話框要顯示的一個list,一般用於顯示幾個命令時
 setMultiChoiceItems :用來設置對話框顯示一系列的複選框
 setSingleChoiceItems :用來設置對話框顯示一系列的單選框
 setNeutralButton    :普通按鈕
 setPositiveButton   :給對話框添加"Yes"按鈕
 setNegativeButton :對話框添加"No"按鈕
 create : 創建對話框
 show :顯示對話框

2.2簡單彈框顯示

        new AlertDialog.Builder(this)
                .setTitle("警告")
                .setMessage("您是否註銷")
                .setNegativeButton("取消", null)
                .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        用戶點擊確定後的操作
                    }
                }).create().show();

2.3列表彈框

       //查驗員名稱列表
        final String[] names = new String[informationBeans.size()];
        //初始化查驗員名稱列表
        for (int i = 0; i < informationBeans.size(); i++) {
            names[i] = informationBeans.get(i).getCyyName() + "";//加引號防止警員編號或姓名爲null
        }
        AlertDialog.Builder listDialog =
                new AlertDialog.Builder(LoginActivity.this);
        listDialog.setTitle("請選擇查驗員姓名");
        listDialog.setCancelable(true);
        listDialog.setItems(names, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // which 下標從0開始
                LogUtils.w(informationBeans.get(which).toString());
            }
        }).show();

2.4單選列表

       final int[] index = new int[1];
        final String[] items4 = new String[]{"item9", "item4", "item1", "item3"};//創建item
        new AlertDialog.Builder(this)
                .setTitle("選擇您喜歡的item")
                .setIcon(R.mipmap.ic_launcher)
                .setSingleChoiceItems(items4, 0, new DialogInterface.OnClickListener() {//添加單選框
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        index[0] = i;
                    }
                })
                .setPositiveButton("確定", new DialogInterface.OnClickListener() {//添加"Yes"按鈕
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(RequestAction.this, "這是確定按鈕" + "點的是:" + items4[index[0]], Toast.LENGTH_SHORT).show();
                    }
                })
                .setNegativeButton("取消", null)
                .setCancelable(false).create().show();

2.5多選列表

        final String[] items5 = {"item1", "item2", "item3", "item4"};
        final boolean[] booleans = {true, true, false, false};
        new AlertDialog.Builder(this)
                .setTitle("選擇您喜歡的")
                .setIcon(R.mipmap.ic_launcher)
                .setMultiChoiceItems(items5, booleans, new DialogInterface.OnMultiChoiceClickListener() {//創建多選框
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                        booleans[i] = b;
                    }
                })
                .setPositiveButton("確定", new DialogInterface.OnClickListener() {//添加"Yes"按鈕
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        StringBuilder stringBuilder = new StringBuilder();
                        for (int a = 0; a < booleans.length; a++) {
                            if (booleans[a]) {
                                stringBuilder.append(items5[a]).append(",");
                            }
                        }
                        Toast.makeText(RequestAction.this, "選中的是:" +
                                stringBuilder.toString(), Toast.LENGTH_SHORT).show();
                    }
                })
                .setNegativeButton("取消", null)
                .setCancelable(false).create().show();

2.6自定義Adapter

     final String[] items6 = {"item1", "item2", "item3", "item4"};
        new AlertDialog.Builder(this)
                .setTitle("標題")
                .setIcon(R.mipmap.ic_launcher)
                .setAdapter(new ArrayAdapter<String>(RequestAction.this, R.layout.item, R.id.tv, items6), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(RequestAction.this, "點的是:" + items6[i], Toast.LENGTH_SHORT).show();
                    }
                })
                .create().show();

R.layout.item對應的佈局文件,R.id.tv對應的控件

2.7自定義view的用法

     final AlertDialog.Builder alertDialog7 = new AlertDialog.Builder(this);
        View view1 = View.inflate(this, R.layout.activity_alter_dialog_setview, null);
        final EditText et = view1.findViewById(R.id.et);
        Button bu = view1.findViewById(R.id.button);
        alertDialog7
                .setTitle("Login")
                .setIcon(R.mipmap.ic_launcher)
                .setView(view1)
                .create();
        final AlertDialog show = alertDialog7.show();
        bu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(RequestAction.this, "電話" + et.getText().toString(), Toast.LENGTH_SHORT).show();
                show.dismiss();
            }
        });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章