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)加入事件,点击后触发的(当然也可以不加)
先来看看简单的一个自定义对话框效果图