Dialog对话框(此5种)

版权声明:https://blog.csdn.net/qq_40881680 https://blog.csdn.net/qq_40881680/article/details/81188537

                                                            AlertDialog对话框

Dialog 类是对话框的基类,但应该避免直接实例化 Dialog,而应使用其子类,比如(AlertDialog,progressDialog,DatePickerDialog、TimePickerDialog等)

下面这五种分别是:普通Dialog、进度条Dialog、日期Dialog、时间选择Dialog、自定义Dialog

不同的Android版本打开的效果也不同

1、普通Dialog效果图:

普通Dialog实现代码:

AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
                builder1.setTitle("普通对话框");//设置标题
                builder1.setMessage("对话框内容");//设置对话框内容

                //确定按钮监听
                builder1.setPositiveButton("确认", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "点击了确认按钮", Toast.LENGTH_SHORT).show();
                    }
                });

                //取消按钮监听
                builder1.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "点击了取消按钮", Toast.LENGTH_SHORT).show();
                    }
                });

                //忽略按钮监听
                builder1.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, "点击了忽略按钮", Toast.LENGTH_SHORT).show();
                    }
                });

                //展示出AlertDialog
                builder1.show();

2、进度条Dialog效果图:

进度条Dialog实现代码:

ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setTitle("进度条Dialog标题");//设置标题内容
                progressDialog.setIcon(R.mipmap.ic_launcher);//设置标题图片
                progressDialog.setCancelable(true);//设置是否可撤销:false 不可撤销
                progressDialog.setMessage("玩命加载中");//设置内容
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//水平精确进度条
                //progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//旋转模糊进度条
                progressDialog.show();
                progressDialog.setMax(100);//设置最大值
                progressDialog.setProgress(50);//设置进度

3、日期dialog,先看效果图,

在上效果图种,日期选择对话框加入了一个点击事件,点击后吐司当前的日期

看以下代码(日期选择对话框):

Calendar calendar = Calendar.getInstance();//日历类

final int year = calendar.get(Calendar.YEAR);//表示年的一个变量
final int month = calendar.get(Calendar.MONTH);//表示月的一个变量
final int day = calendar.get(Calendar.DAY_OF_MONTH);//表示某一天的一个变量
//以上三个变量用于赋值日期,吐司时用到

//DatePickerDialog传入5个参数分别是:上下文环境、监听事件和以上三个变量(年year、月month、日day)
DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {

                    //这里是日期选择的一个点击事件
                    @Override
                    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                        Toast.makeText(MainActivity.this, year + "-" + (month + 1) + "-" + day, Toast.LENGTH_SHORT).show();
                    }
                }, year, month, day);

//最后show一下,显示
datePickerDialog.show();

4、接下来是时间选择对话框

先看效果图,目的是实现一个时间选择,同样时选择一个日期,点击确定吐司出来

吐司时间效果

接下来看部分代码:

TimePickerDialog传入五个参数,分别如下

第一个是  上下文

第二个是  一个时间选择的点击事件

第三个是  默认起始的时间:时

第四个是  默认起始的时间:分

第五个是  布尔类型的值:是否是24小时制  true:是  false:否

TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
      @Override
      public void onTimeSet(TimePicker timePicker, int i, int i1) {
            Toast.makeText(MainActivity.this, i + ":" + i1, Toast.LENGTH_SHORT).show();
      }
}, 12, 1, false);//12:默认起始时间时;1:默认起始分;false:是否是24小时制
timePickerDialog.show();//最后显示,千万记得加,要不然会不显示

5、最后一个,自定义dialog

就比如可以做出一个弹出协议的东西,顾名思义,就是自定义一个布局,点击事件可以触发它,弹出来自定义一个对话框

两个步骤

(1)自定义一个View的一个Xml文件,用于弹出它

(2)加入事件,点击后触发的(当然也可以不加)

先来看看简单的一个自定义对话框效果图

猜你喜欢

转载自blog.csdn.net/qq_40881680/article/details/81188537