android开发——dialog详解

Android共有4种对话框:
1、AlertDialog:可以有0-3个按钮,可以有单选框或者复选框的对话框,可以创建大多数界面(推荐)
2、ProgressDialog:显示一个进度环或者进度条,继承自AlertDialog。
3、DatePickerDialog:让用户选择一个日期
4、TimePickerDialog:让用户选择一个时间

普通弹框的创建

public void showDialog(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) {
                  //do something
             }
        }).
        // 设置取消按钮,null是什么都不做
        setNegativeButton("取消", null).
        // 设置退出按钮,在中间的按钮
        setNeutralButton("退出", new OnClickListener() {

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

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

}

选择菜单式的弹框

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

public void showMenuDialog(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],0).show();
           }
     }).
     // 产生对话框,并显示出来
     create().show();
}

单选按钮式的弹框

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

public void radioListDialog(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],0).show();
            }
        }).
        setPositiveButton("确定", new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "选择确定", 0).show();
            }
        }).
        // 取消,什么都不做,对话框消失而已
        setNegativeButton("取消", null).
        // 产生对话框,并显示出来
         create().show();
}

 多选按钮式的弹窗

 public void checkboxListDialog(View v) {
        boolean[] checkedItems = { true, false, false, true };
        final List<String> list = new ArrayList<String>();
        list.add("音乐");
        list.add("看书");
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("选择你最喜欢的课程").
                setMultiChoiceItems(array, checkedItems,
                        new OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which, boolean 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();
}

圆形进度弹框

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

水平进度弹框

 public void showProgress(View v) {
        final ProgressDialog dialog = new ProgressDialog(this);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMax(100);
        dialog.setTitle("文件下载");
        dialog.setMessage("正在下载...");
        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();
}

选择时间弹框

public void selectTime(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();
}

选择日期弹框

 public void selectDate(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();
}

猜你喜欢

转载自blog.csdn.net/river66/article/details/86596528