Android对话框

对话框相关概念:

Android API 支持下列类型的对话框对象: 

(一)警告对话框 AlertDialog: 一个可以有0到3个按钮, 一个单选框或复选框的列表的对话框. 警告对话框可以创建大多数的交互界面, 是推荐的类型.

(二)进度对话框 ProgressDialog: 显示一个进度环或者一个进度条. 由于它是AlertDialog的扩展, 所以它也支持按钮.

(三)日期选择对话框 DatePickerDialog: 让用户选择一个日期.

(四)时间选择对话框 TimePickerDialog: 让用户选择一个时间


Dialog的创建和使用:

在时间应用中的对话框基本不用Dialog而是用它的子类。 
这里简单使用一下Dialog,代码如下:

  1. // 普通的对话框,普通的对话框功能很少,除非重写类  
  2.     public void bt1(View v) {  
  3.         // 创建对话框对象  
  4.         Dialog dialog = new Dialog(this);  
  5.         // 创建对话框内容    
  6.          dialog.setTitle("对话框的标题");       
  7.         // 显示对话框  
  8.         dialog.show();  
  9.   
  10.     }  
// 普通的对话框,普通的对话框功能很少,除非重写类
    public void bt1(View v) {
        // 创建对话框对象
        Dialog dialog = new Dialog(this);
        // 创建对话框内容  
         dialog.setTitle("对话框的标题");     
        // 显示对话框
        dialog.show();

    }

运行后结果:


AlertDialog的创建和使用:

  1. // 警告对话框,需要用Builder方法创建  
  2.     public void bt2(View v) {  
  3.         // 这里的属性可以一直设置,因为每次设置后返回的是一个builder对象  
  4.         AlertDialog.Builder builder = new AlertDialog.Builder(this);  
  5.         // 设置提示框的标题  
  6.         builder.setTitle("提示标题").  
  7.         // 设置提示框的图标  
  8.                 setIcon(R.drawable.ic_launcher).  
  9.                 // 设置要显示的信息  
  10.                 setMessage("文本的提示信息:你妈喊你回家吃饭了!").  
  11.                 // 设置确定按钮  
  12.                 setPositiveButton("确定", new OnClickListener() {  
  13.   
  14.                     @Override  
  15.                     public void onClick(DialogInterface dialog, int which) {  
  16.                         Toast.makeText(MainActivity.this, "选择就确定哦", 0).show();  
  17.   
  18.                     }  
  19.                 }).  
  20.   
  21.                 // 设置取消按钮,null是什么都不做  
  22.                 setNegativeButton("取消", null).  
  23.                 // 设置退出按钮,在中间的按钮  
  24.                 setNeutralButton("退出", new OnClickListener() {  
  25.   
  26.                     @Override  
  27.                     public void onClick(DialogInterface dialog, int which) {  
  28.                         // 退出程序  
  29.                         finish();  
  30.   
  31.                     }  
  32.                 });  
  33.         // 生产对话框  
  34.         AlertDialog alertDialog = builder.create();  
  35.         // 显示对话框  
  36.         alertDialog.show();  
  37.   
  38.     }  
// 警告对话框,需要用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();

    }

运行结果:



有输入框的对话框:

  1. // 设置一个有输入文本的对话框---->builder的setView方法  
  2.     // 输入数据后,对数据进行处理  
  3.     // 这里要设置按钮,才能对数据的数据进行处理  
  4.     public void bt7(View v) {  
  5.   
  6.         // 创建一个EditText对象  
  7.         final EditText et = new EditText(this);  
  8.   
  9.         // 创建对话框对象  
  10.         new AlertDialog.Builder(this).  
  11.         // 设置标题  
  12.                 setTitle("有输入框的对话框").  
  13.                 // 添加输入的文本框  
  14.                 setView(et).  
  15.                 // 添加确定按钮  
  16.                 setPositiveButton("确定", new OnClickListener() {  
  17.   
  18.                     @Override  
  19.                     public void onClick(DialogInterface dialog, int which) {  
  20.                         // 获取输入的字符  
  21.                         String in = et.getText().toString();  
  22.                         Toast.makeText(MainActivity.this, "输入;" + in, 0).show();  
  23.                     }  
  24.                 }).setNegativeButton("取消", null).  
  25.                 // 产生并显示  
  26.                 create().show();  
  27.   
  28.     }  
// 设置一个有输入文本的对话框---->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();

    }

运行结果:



使用对话框内的控件控制对话框:

使用对话框中的按钮,来关闭对话框

  1. // 使用对话框内的控件来关闭对话框  
  2.     public void bt8(View v) {  
  3.   
  4.         // 创建一个EditText对象  
  5.         final Button btn = new Button(this);  
  6.         // 给按钮设置文字  
  7.         btn.setText("关闭对话框");  
  8.         // 创建对话框对象  
  9.         final AlertDialog dialog = new AlertDialog.Builder(this).  
  10.         // 设置标题  
  11.                 setTitle("通过按钮关闭对话框").  
  12.                 // 添加输入的文本框  
  13.                 setView(btn).  
  14.                 // 产生  
  15.                 create();  
  16.   
  17.         // 设置对话框不可以关闭,一般情况下对话框是失去焦点后自动消失的  
  18.         // 但是加 了.setCancelable(false),对话框就不会消失,除非手动退出  
  19.         dialog.setCancelable(false);  
  20.   
  21.         btn.setOnClickListener(new View.OnClickListener() {  
  22.   
  23.             @Override  
  24.             public void onClick(View v) {  
  25.                 // 点击后关闭对话框,两种方法都可以  
  26.                  dialog.cancel();  
  27.                 //dialog.dismiss();  
  28.             }  
  29.         });  
  30.   
  31.         // 显示  
  32.         dialog.show();  
  33.   
  34.         //给对话框设置一个监听时间,对话框退出前会执行  
  35.         dialog.setOnDismissListener(new OnDismissListener() {  
  36.   
  37.             @Override  
  38.             public void onDismiss(DialogInterface dialog) {  
  39.                 // 只要关闭都会调用  
  40.                 Toast.makeText(MainActivity.this, "关闭", Toast.LENGTH_SHORT)  
  41.                         .show();  
  42.             }  
  43.         });  
  44.   
  45.     }  
// 使用对话框内的控件来关闭对话框
    public void bt8(View v) {

        // 创建一个EditText对象
        final Button btn = new Button(this);
        // 给按钮设置文字
        btn.setText("关闭对话框");
        // 创建对话框对象
        final AlertDialog dialog = new AlertDialog.Builder(this).
        // 设置标题
                setTitle("通过按钮关闭对话框").
                // 添加输入的文本框
                setView(btn).
                // 产生
                create();

        // 设置对话框不可以关闭,一般情况下对话框是失去焦点后自动消失的
        // 但是加 了.setCancelable(false),对话框就不会消失,除非手动退出
        dialog.setCancelable(false);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // 点击后关闭对话框,两种方法都可以
                 dialog.cancel();
                //dialog.dismiss();
            }
        });

        // 显示
        dialog.show();

        //给对话框设置一个监听时间,对话框退出前会执行
        dialog.setOnDismissListener(new OnDismissListener() {

            @Override
            public void onDismiss(DialogInterface dialog) {
                // 只要关闭都会调用
                Toast.makeText(MainActivity.this, "关闭", Toast.LENGTH_SHORT)
                        .show();
            }
        });

    }

运行结果:



圆形进度条对话框:


  1. // 显示圆形的进度框  
  2.     public void bt1(View v) {  
  3.         // 创建进度条的对话框  
  4.         ProgressDialog dialog = new ProgressDialog(this);  
  5.         // 设置进度条的样式,选择圆形或条状  
  6.         // 这里这圆形的  
  7.         dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);  
  8.         // 设置标题  
  9.         dialog.setTitle("文件下载");  
  10.         // 设置文本信息  
  11.         dialog.setMessage("正在下载。。。");  
  12.         // 设置是否能用后退键出对话框  
  13.         // 选择false就代表不能  
  14.         // 如果设置为false,程序可能退出不了  
  15.         dialog.setCancelable(true);  
  16.         // 显示对话框  
  17.         dialog.show();  
  18.     }  
// 显示圆形的进度框
    public void bt1(View v) {
        // 创建进度条的对话框
        ProgressDialog dialog = new ProgressDialog(this);
        // 设置进度条的样式,选择圆形或条状
        // 这里这圆形的
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        // 设置标题
        dialog.setTitle("文件下载");
        // 设置文本信息
        dialog.setMessage("正在下载。。。");
        // 设置是否能用后退键出对话框
        // 选择false就代表不能
        // 如果设置为false,程序可能退出不了
        dialog.setCancelable(true);
        // 显示对话框
        dialog.show();
    }

运行结果:



条形进度条对话框

  1. // 显示设置水平的进度框  
  2.     public void bt2(View v) {  
  3.         // 创建进度条的对话框  
  4.         final ProgressDialog dialog = new ProgressDialog(this);  
  5.         // 设置进度条的样式,选择圆形或条状  
  6.         // 这里这圆形的  
  7.         dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  
  8.         // 设置标题  
  9.         dialog.setTitle("文件下载");  
  10.         // 设置文本信息  
  11.         dialog.setMessage("正在下载。。。");  
  12.         // 设置是否能用后退键出对话框  
  13.         // 选择false就代表不能  
  14.         // 如果设置为false,程序可能退出不了  
  15.         dialog.setCancelable(false);  
  16.         // 显示对话框  
  17.         dialog.show();  
  18.   
  19.         // 这里新建一个线程来,跟新进度和关闭页面  
  20.         new Thread(new Runnable() {  
  21.   
  22.             @Override  
  23.             public void run() {  
  24.                 // 获取进度值的当前的值  
  25.                 int index = 0;  
  26.                 // 跟新进度  
  27.                 while (index < dialog.getMax()) {  
  28.                     index++;  
  29.                     try {  
  30.                         Thread.sleep(100);  
  31.                     } catch (InterruptedException e) {  
  32.                         e.printStackTrace();  
  33.                     }  
  34.                     // 设置进度的值  
  35.                     dialog.setProgress(index);  
  36.   
  37.                 }  
  38.   
  39.                 // 完成任务后,退出对话框  
  40.                 dialog.cancel();  
  41.   
  42.             }  
  43.         }).start();  
  44.   
  45.     }  
// 显示设置水平的进度框
    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();

    }

运行结果:



时间对话框:

  1. // 显示时间的对话框  
  2.     public void btn1(View v) {  
  3.         // 第一个参数是上下文  
  4.         // 第二个参数是监听时间选择后的事件  
  5.         // 后面两个数是默认是时间  
  6.         // 后一个是代表是否显示时间的格式是24小时制的  
  7.         TimePickerDialog dialog = new TimePickerDialog(this,  
  8.                 new OnTimeSetListener() {  
  9.   
  10.                     @Override  
  11.                     public void onTimeSet(TimePicker view, int hourOfDay,  
  12.                             int minute) {  
  13.                         Toast.makeText(MainActivity.this,  
  14.                                 hourOfDay + "时" + minute + "分", 0).show();  
  15.   
  16.                     }  
  17.                 }, 21, 8, true);  
  18. //显示标题  
  19.         dialog.setTitle("选择你要设定的时间");  
  20.         // 显示时间的对话框  
  21.         dialog.show();  
  22.   
  23.     }  
// 显示时间的对话框
    public void btn1(View v) {
        // 第一个参数是上下文
        // 第二个参数是监听时间选择后的事件
        // 后面两个数是默认是时间
        // 后一个是代表是否显示时间的格式是24小时制的
        TimePickerDialog dialog = new TimePickerDialog(this,
                new OnTimeSetListener() {

                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay,
                            int minute) {
                        Toast.makeText(MainActivity.this,
                                hourOfDay + "时" + minute + "分", 0).show();

                    }
                }, 21, 8, true);
//显示标题
        dialog.setTitle("选择你要设定的时间");
        // 显示时间的对话框
        dialog.show();

    }

运行结果:



日期对话框:

  1. // 显示日期的对话框  
  2.     public void btn2(View v) {  
  3.         // 第一个参数是上下文  
  4.         // 第二个参数是监听时间选择后的事件  
  5.         // 后面三个数是默认是日期数  
  6.         DatePickerDialog dialog = new DatePickerDialog(this,  
  7.                 new OnDateSetListener() {  
  8.                     // 日期选择器上的月份是从0开始的  
  9.   
  10.                     @Override  
  11.                     public void onDateSet(DatePicker view, int year,  
  12.                             int monthOfYear, int dayOfMonth) {  
  13.                         Toast.makeText(  
  14.                                 MainActivity.this,  
  15.                                 year + "年" + (monthOfYear + 1) + "月"  
  16.                                         + dayOfMonth + "日", 0).show();  
  17.   
  18.                     }  
  19.                 }, 2016, 11, 13);  
  20.         // 显示时间的对话框  
  21.         dialog.show();  
  22.   
  23.     }  
// 显示日期的对话框
    public void btn2(View v) {
        // 第一个参数是上下文
        // 第二个参数是监听时间选择后的事件
        // 后面三个数是默认是日期数
        DatePickerDialog dialog = new DatePickerDialog(this,
                new OnDateSetListener() {
                    // 日期选择器上的月份是从0开始的

                    @Override
                    public void onDateSet(DatePicker view, int year,
                            int monthOfYear, int dayOfMonth) {
                        Toast.makeText(
                                MainActivity.this,
                                year + "年" + (monthOfYear + 1) + "月"
                                        + dayOfMonth + "日", 0).show();

                    }
                }, 2016, 11, 13);
        // 显示时间的对话框
        dialog.show();

    }

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值