zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 封装对话框工具类

2023-09-14 09:14:00 时间

(一)比较正常的AlertDialog的创建和使用,Alert(警告)

代码设计:

// 警告对话框,需要用Builder方法创建
    public void bt2(View v) {
        // 这里的属性可以一直设置,因为每次设置后返回的是一个builder对象
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 设置提示框的标题
        builder.setTitle("提示标题").
        // 设置提示框的图标
                setIcon(R.drawable.ic_launcher).
                // 设置要显示的信息
                setMessage("文本的提示信息:你妈喊你回家吃饭了!").
                // 设置确定按钮
                setPositiveButton("确定", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "选择就确定哦", 0).show();

                    }
                }).

                // 设置取消按钮,null是什么都不做
                setNegativeButton("取消", null).
                // 设置退出按钮,在中间的按钮
                setNeutralButton("退出", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 退出程序
                        finish();

                    }
                });
        // 生产对话框
        AlertDialog alertDialog = builder.create();
        // 显示对话框
        alertDialog.show();
    }

程序运行后显示的结果:
在这里插入图片描述
这里如果点击取消,对话框消失,什么都没有做
如果点击退出,会直接退出程序
如果点击确定,会弹出一个Toast,提示你

(二)设计一个选择菜单样式的对话框

代码设计:

//数据源
    String[] array = new String[] { "音乐", "体育", "舞蹈", "看书" };

    // 显示一个菜单的对话框选项,点击选择菜单后,菜单会消失

    // 匿名类去创建
    public void bt3(View v) {

        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 设置标题
        builder.setTitle("选择你最喜欢的课程").
                // 设置可选择的内容,并添加点击事件
                        setItems(array, new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // which代表的是选择的标签的序列号

                        Toast.makeText(MainActivity.this, "选择" + array[which],
                                Toast.LENGTH_SHORT).show();

                    }
                }).
                // 产生对话框,并显示出来
                        create().show();
    }

程序运行后显示的结果:
在这里插入图片描述

(三)设置一个单选按钮菜单的对话框

其实这个对话框和上面的菜单对话框差不多,只是样式改变了,还有一点不同的是点击一个选项后对话框是不会消失的,所以必须要设置按钮,来使对话框消失
代码设计:

String[] array = new String[] { "音乐", "体育", "舞蹈", "看书" };

// 单选按钮的对话框,选择一个按钮值后,
    // 对话框也是不会自动消失,需要自己关闭
    // 要设置按钮,点击按钮后对话框才会消失
    public void bt4(View v) {
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 设置标题
        builder.setTitle("选择你最喜欢的课程").
                // 设置可选择的内容,并添加点击事件
                // 第一个参数是可以选择的单选框的内容
                // 第二个参数是默认选中的项
                // 第三个参数是点击选中的监听器
                        setSingleChoiceItems(array, 0, new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        Toast.makeText(MainActivity.this, "选择" + array[which],
                                Toast.LENGTH_SHORT).show();

                    }
                }).
                // 因为对话框不会自动消失,所以要添加按钮的必要
                // 设置确定按钮
                        setPositiveButton("确定", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "选择确定", Toast.LENGTH_SHORT).show();
                    }
                }).
                // 取消,什么都不做,对话框消失而已
                        setNegativeButton("取消", null).
                // 产生对话框,并显示出来
                        create().show();
    }

运行后的结果:
在这里插入图片描述

(四)多选项的对话框设计

多选框的显示和单选的显示也是有点相似的,都是需要设置按钮来使对话框消失
代码如下:

String[] array = new String[] { "音乐", "体育", "舞蹈", "看书" };
// 多选按钮的对话框
    // 对话框也是不会自动消失,需要自己关闭
    // 要设置按钮,点击按钮后对话框才会消失
    public void bt5(View v) {

        // 多选按钮的默认状态
        boolean[] checkedItems = { true, false, false, true };

        // 多选按钮选中后保存的数据
        final List<String> list = new ArrayList<String>();
        // 默认的数据
        list.add("音乐");
        list.add("看书");
        // 创建对话框的builder对象
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);

        // 设置标题
        builder.setTitle("选择你最喜欢的课程").
                // 设置可选择的内容,并添加点击事件
                // 第一个参数是可以选择的选框的内容
                // 第二个参数是一个布尔数组,如果是true代表的是默认选中
                // 第三个参数是点击选中的监听器
                        setMultiChoiceItems(array, checkedItems,
                        new OnMultiChoiceClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                                int which, boolean isChecked) {
                                // 这里无论某个选项是被选中后被取消都会触发该方法
                                // which代表的是选中的是多少游标值的选项
                                // isChecked是代表该选项是或否选中了
                                // 判断如果集合中有某个数据,就把他移除,否则就添加数据
                                // 注意这里数选择之后的状态
                                if (isChecked) {
                                    // 添加数据
                                    list.add(array[which]);
                                } else {
                                    // 移除数据
                                    list.remove(array[which]);
                                }

                            }
                        }).
                // 因为对话框不会自动消失,所以要添加按钮的必要
                // 设置确定按钮
                        setPositiveButton("确定", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你选中了" + list, 0)
                                .show();
                    }
                }).
                // 取消,什么都不做,对话框消失而已
                        setNegativeButton("取消", null).
                // 产生对话框,并显示出来
                        create().show();
    }

在这里插入图片描述
在这里插入图片描述

(五)设计一个有输入框的对话框

// 设置一个有输入文本的对话框---->builder的setView方法
    // 输入数据后,对数据进行处理
    // 这里要设置按钮,才能对数据的数据进行处理
    public void bt7(View v) {

        // 创建一个EditText对象
        final EditText et = new EditText(this);

        // 创建对话框对象
        new AlertDialog.Builder(this).
        // 设置标题
                setTitle("有输入框的对话框").
                // 添加输入的文本框
                setView(et).
                // 添加确定按钮
                setPositiveButton("确定", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // 获取输入的字符
                        String in = et.getText().toString();
                        Toast.makeText(MainActivity.this, "输入;" + in, 0).show();
                    }
                }).setNegativeButton("取消", null).
                // 产生并显示
                create().show();

    }

在这里插入图片描述

(六)条形对话框

// 显示设置水平的进度框
    public void bt2(View v) {
        // 创建进度条的对话框
        final ProgressDialog dialog = new ProgressDialog(this);
        // 设置进度条的样式,选择圆形或条状
        // 这里这圆形的
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        // 设置标题
        dialog.setTitle("文件下载");
        // 设置文本信息
        dialog.setMessage("正在下载。。。");
        // 设置是否能用后退键出对话框
        // 选择false就代表不能
        // 如果设置为false,程序可能退出不了
        dialog.setCancelable(false);
        // 显示对话框
        dialog.show();

        // 这里新建一个线程来,跟新进度和关闭页面
        new Thread(new Runnable() {

            @Override
            public void run() {
                // 获取进度值的当前的值
                int index = 0;
                // 跟新进度
                while (index < dialog.getMax()) {
                    index++;
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    // 设置进度的值
                    dialog.setProgress(index);
                }
                // 完成任务后,退出对话框
                dialog.cancel();
            }
        }).start();
    }

在这里插入图片描述