安卓系统自带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();
            }
        });

 

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