写在前面
下划线命名的好处:输入任意单词都可以有该方法的代码提示
注意:如果只设置了Icon而没有设置Title,图标将不会显示
注意:如果设置了Message属性,就会优先显示Message,关于属性的设置只会有一个生效,Message优先级总是最高
1.普通(消息)对话框
private void normal_dialog(){
//创建构建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//类有两个,貌似没有什么区别
//android.support.v7.AlertDialog.app
//android.support.app
//设置内容
builder.setIcon(R.drawable.guy);
builder.setTitle("我是标题");
builder.setMessage("请看这是一串内容");
// 注意:如果只设置了Icon而没有设置Title,图标将不会显示
//设置确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确定了", Toast.LENGTH_SHORT).show();
}
});
//设置取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_SHORT).show();
}
});
//使用构建者创建对话框
AlertDialog dialog = builder.create();
//显示该对话框
dialog.show();
}
2.单选对话框
private void single_dialog(){
//创建构建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置内容
builder.setIcon(R.drawable.guy);
builder.setTitle("我是标题");
//builder.setMessage("请看这是一串内容");
// 注意:如果设置了Message属性,就会优先显示Message而不会显示SingleChoiceItems单选列表,Message优先级总是最高
//设置确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确定了", Toast.LENGTH_SHORT).show();
}
});
//设置取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_SHORT).show();
}
});
final String[] msgs = {"单选1","单选2","单选3","单选4"};
builder.setSingleChoiceItems(msgs, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, ""+msgs[which], Toast.LENGTH_SHORT).show();
}
});
//使用构建者创建对话框
AlertDialog dialog = builder.create();
//显示该对话框
dialog.show();
}
3.多选对话框
private void mulite_dialog(){
//创建构建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置内容
builder.setIcon(R.drawable.guy);
builder.setTitle("我是标题");
//设置确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确定了", Toast.LENGTH_SHORT).show();
}
});
//设置取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_SHORT).show();
}
});
String[] msgs = {"多选1","多选2","多选3","多选4"};
final boolean[] flags = {true,true,true,false};
builder.setMultiChoiceItems(msgs, flags, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
flags[which] = isChecked;//同步数据源
}
});
//使用构建者创建对话框
AlertDialog dialog = builder.create();
//显示该对话框
dialog.show();
}
4.自定义对话框
自定义布局:customer_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_height="match_parent">
<TextView
android:textSize="50sp"
android:text="一行字"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:src="@drawable/guy"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
private void customer_dialog(View view){
//创建构建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//填充自定义布局
builder.setView(view);
//使用构建者创建对话框
AlertDialog dialog = builder.create();
//显示该对话框
dialog.show();
}
构建参数,调用方法
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.customer_dialog,null);
customer_dialog(view);
5.精确进度条对话框
private void hor_progress_dialog(){
final ProgressDialog dialog = new ProgressDialog(this);
//设置内容
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平中央
dialog.setMax(100);
dialog.setMessage("正在下载...");
dialog.show();
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
dialog.setProgress(dialog.getProgress()+10);
if (dialog.getProgress() >= dialog.getMax()){
dialog.dismiss();//隐藏对话框
timer.cancel();//停止计时器
}
}
},1000,1000);//第二参数:首次延时1000毫秒,第三参数:每次间隔1000毫秒
}
6.模糊进度条对话框
private void spi_progress_dialog(){
ProgressDialog dialog = new ProgressDialog(this);
//设置内容
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置水平中央
dialog.setMessage("正在下载...");
dialog.show();
}
7.日期选择对话框
private void date_dialog(){
Calendar calendar = Calendar.getInstance();
//参数:上下文,监听器,默认年,默认月,默认日
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Toast.makeText(MainActivity.this, year+"-"+(month+1)+"-"+dayOfMonth, Toast.LENGTH_SHORT).show();
}
},calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}
8.时间选择对话框
private void time_dialog(){
Calendar calendar = Calendar.getInstance();
//参数:上下文,监听器,默认时,默认分,是否24时制
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(MainActivity.this, hourOfDay+":"+minute, Toast.LENGTH_SHORT).show();
}
},calendar.get(Calendar.HOUR),calendar.get(Calendar.MINUTE),true).show();
}