一般作为提示使用
xml文件
activity_main.xml
MainActivity.Java
/**
*常规对话框的点击事件
* @param view
*/
public void bt1(View view) {
new AlertDialog.Builder(this)
//图标
.setIcon(R.drawable.ic_launcher_background)
//标题
.setTitle("吃饭")
//不可点击外部区域取消对话框
.setCancelable(false)
//内容
.setMessage("你吃饭了吗")
//第一个参数选项,第二个参数为该选项的点击事件
.setPositiveButton("吃了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "吃这么快", Toast.LENGTH_SHORT).show();
}
})
//第一个参数选项,第二个参数为该选项的点击事件
.setNegativeButton("没吃", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "还不吃", Toast.LENGTH_SHORT).show();
}
})
//展示
.show();
}
效果图
一个选择类的对话框
xml文件
activity_main.xml
MainActivity.Java
这个dialog为单选框,如需多选,setSingleChoiceItems方法替换为setMultiChoiceItems方法
/**
*带选项列表对话框的点击事件
* @param view
*/
public void bt2(View view) {
//定义一个字符串数组存放列表信息
String[]colors={"红","黄","蓝","绿","黑"};
new AlertDialog.Builder(this)
//不可点击外部区域取消对话框
.setCancelable(false)
//标题
.setTitle("选择一种颜色")
.setPositiveButton("ok", null)
//实现单选列表,第一个参数使用colors数据为选项,第二个参数为默认选中的位置(如不需要默认选中,则设为-1),第三个位置参数为该选项的点击事件
//如需多选则使用.setMultiChoiceItems()
.setSingleChoiceItems(colors, 0, new DialogInterface.OnClickListener() {
@Override
//第一个参数为调用这个对话框的本身,第二个参数为位置
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, colors[i], Toast.LENGTH_SHORT).show();
}
})
.show();
}
效果图
一个自己定义样式的dialog,这里我模拟了一个登录弹窗
需先在layout里创建一个xml文件,这里我命名为dialog_view
dialog_view.xml
xml文件
activity_main.xml
MainActivity.Java
/**
* 自定义视图对话框
* @param view
*/
public void bt3(View view) {
//使用inflate方法,从一个XML的资源文件当中获取一个视图
View v=View.inflate(this,R.layout.dialog_view,null);
//获取dialog_view中的组件
final EditText eduser=v.findViewById(R.id.user);
final EditText edpaw=v.findViewById(R.id.paw);
new AlertDialog.Builder(this)
//标题
.setTitle("用户登录")
//不可点击外部区域取消对话框
.setCancelable(false)
//设置视图
.setView(v)
.setPositiveButton("登录", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//按钮点击时,获取控件中的数据
String username=eduser.getText().toString().trim();
String pawd=edpaw.getText().toString().trim();
//通过Toast输出
Toast.makeText(MainActivity.this, "用户名:"+username+"密码:"+pawd, Toast.LENGTH_SHORT).show();
}
})
.show();
}
效果图
可用于加载等待
xml文件
activity_main.xml
MainActivity.Java
/**
* 启动带进度条的对话框
* @param view
*/
public void bt4(View view) {
//创建一个进度条对话框
ProgressDialog progressDialog=new ProgressDialog(this);
//标题
progressDialog.setTitle("进度条对话框");
//设置当前进度
progressDialog.setProgress(30);
//设置样式为水平状进度条
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//不可点击外部区域取消对话框
progressDialog.setCancelable(false);
progressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
//for循环使进度条不断累加推进
for (int i=1;i<20;i++){
try {
//通过线程休眠是=使两次进度条修改时间之间间隔200毫秒
Thread.sleep(200);
}catch (InterruptedException e){
e.printStackTrace();
}
//获取当前的进度条加20轮,每轮前进5格
progressDialog.setProgress(progressDialog.getProgress()+5);
}
//完成后隐藏进度条
progressDialog.dismiss();
}
}).start();
}
效果图
用于生日选择,时间选择等
xml文件
activity_main.xml
MainActivity.Java
/**
* 日期选择对话框
* @param view
*/
public void bt5(View view) {
//Calendar日历类获取年月日的三个字段
Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH);
int day=calendar.get(Calendar.DAY_OF_MONTH);
//创建一个日期选择对话框,OnDateSetListener表示在日期选择当中会弹出一个onDateSet返回日期的年月日
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
//onDateSet带回选中的年月日
public void onDateSet(DatePicker datePicker, int year, int month, int dayofminth) {
Toast.makeText(MainActivity.this, "选中了"+year+"年"+month+"月"+dayofminth+"日", Toast.LENGTH_SHORT).show();
}
//设置当前的年月日
},year,month,day).show();
}
效果图
结束