普通对话框
//构建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置属性
builder.setIcon(R.drawable.ic_launcher_background);//设置图标
builder.setTitle("压了个呸得!");//设置标题
builder.setMessage("说:你是猪。");//设置内容
//设置确定按钮
builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "点我就对了!嘻嘻~", Toast.LENGTH_SHORT).show();
}
});
//设置取消按钮
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "看准点再点,我是你永远得不到爸爸!", Toast.LENGTH_SHORT).show();
}
});
//使用建造者创建对话框
AlertDialog dialog = builder.create();
//显示
dialog.show();
单选对话框
//构建者
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
//设置属性
builder1.setIcon(R.drawable.ic_launcher_background);//设置图标
builder1.setTitle("女朋友和妈妈同时掉水里你救谁?");//设置标题
builder1.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "明智之举哦!棒棒!", Toast.LENGTH_SHORT).show();
}
});
builder1.setNegativeButton("cancle", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "犹豫了吗?", Toast.LENGTH_SHORT).show();
}
});
final String[] item = {"妈妈","女朋友","救命"};
//设置单选列表
//参数1:列表 参数2:默认选中下标 参数3:时间监听
builder1.setSingleChoiceItems(item, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "我就知道你会选:"+item[i], Toast.LENGTH_SHORT).show();
}
});
//使用建造者创建对话框
AlertDialog dialog1 = builder1.create();
//显示
dialog1.show();
多选对话框
//构建者
AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
//设置属性
builder2.setIcon(R.drawable.ic_launcher_background);
builder2.setTitle("更古不变得问题,金钱,美女,权力,任你选~");
builder2.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "小伙子果然够贪心!", Toast.LENGTH_SHORT).show();
}
});
builder2.setNegativeButton("cancle", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "后悔了吧,不瞒你说:我全都要!", Toast.LENGTH_SHORT).show();
}
});
final String item1[] = {"金钱","美女","权力"};
final boolean flag[] = {false,false,false};
//设置多选列表
//参数一 列表 参数二 默认选中下标 参数三 事件监听
builder2.setMultiChoiceItems(item1, flag, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i, boolean b) {
flag[i] = b;
}
});
//使用创造者创建对话框
AlertDialog dialog2 = builder2.create();
//显示
dialog2.show();
自定义对话框
View view = LayoutInflater.from(this).inflate(R.layout.layout_item_dialog,null);
ImageView imageView = view.findViewById(R.id.imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "不要爱上我哦!", Toast.LENGTH_SHORT).show();
//点击图片就可以土司或者关闭对话框
}
});
AlertDialog.Builder builder3 = new AlertDialog.Builder(this);
builder3.setView(view);
AlertDialog dialog3 = builder3.create();
dialog3.show();
条形进度条对话框
//实例化对象
final ProgressDialog dialog4=new ProgressDialog(this);
//设置属性
dialog4.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平样式
dialog4.setMax(100);
dialog4.setMessage("正在下载");
//显示
dialog4.show();
//模拟定时器
final Timer timer=new Timer();
timer.schedule(new TimerTask() {
int progress=0;
@Override
public void run() {
if(progress==100){
dialog4.dismiss();//消失
timer.cancel();
}
dialog4.setProgress(progress+=20);
}
},0,1000);//0秒后执行,每隔1000毫秒执行一次
圆形进度条对话框
//TODO 1:实例化对象
final ProgressDialog dialog5=new ProgressDialog(this);
//TODO 2:设置属性
dialog5.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置圆圈
dialog5.setMax(100);
dialog5.setMessage("正在下载");
//TODO 3:显示
dialog5.show();
//TODO 4:模拟定时器
final Timer timer1=new Timer();
timer1.schedule(new TimerTask() {
int progress=0;
@Override
public void run() {
if(progress==100){
dialog5.dismiss();//消失
timer1.cancel();
}
dialog5.setProgress(progress+=20);
}
},0,1000);//0秒后执行,每隔1000毫秒执行一次
日期选择对话框
/**
* @param context 上下文
* @param listener 监听器
* @param year 默认的年
* @param month 默认的月
* @param dayOfMonth 默认的日
*/
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();
时间选择对话框
/**
* @param context 上下文
* @param listener 监听器
* @param hourOfDay 默认的时
* @param minute 默认的分钟
* @param is24HourView 是否采用24时禁止
*/
//日历对象
Calendar calendar1 = Calendar.getInstance();
//实例化对象
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
Toast.makeText(MainActivity.this, i+":"+i1, Toast.LENGTH_SHORT).show();
}
},calendar1.get(Calendar.HOUR),calendar1.get(Calendar.MINUTE),true).show();
自定义的对话框(重点)
(1)xml布局,自定义对话框布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#11ffffff">
<Button
android:id="@+id/out"
android:layout_width="40dp"
android:layout_height="40dp"
android:text="X"
android:textSize="20dp"
android:gravity="center"
android:layout_alignTop="@id/line1"
android:layout_alignRight="@id/line1"
/>
<LinearLayout
android:id="@+id/line1"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="警告"
android:textColor="#38ADFF"
android:textSize="16sp"/>
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:layout_gravity="center"
android:text="保护视力,少玩手机"/>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginTop="15dp"
android:background="#E4E4E4"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal">
<Button
android:id="@+id/no"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="10dp"
android:background="@null"
android:gravity="center"
android:lines="1"
android:text="取消"
android:textColor="#7D7D7D"
android:textSize="16sp"/>
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:background="#E4E4E4"/>
<Button
android:id="@+id/yes"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginRight="10dp"
android:background="@null"
android:gravity="center"
android:lines="1"
android:text="确定"
android:textColor="#38ADFF"
android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>
(2)自定义类,继承Dialog
public class MyDiyDialog extends Dialog {
private Button out;
private TextView title;
private TextView message;
private Button no;
private Button yes;
public MyDiyDialog(Context context, Button out, Button no, Button yes) {
super(context);
this.out = out;
this.no = no;
this.yes = yes;
}
private String setTitle;
public void setSetTitle(String setTitle) {
this.setTitle = setTitle;
}
private String setMessage;
public void setSetMessage(String setMessage) {
this.setMessage = setMessage;
}
private String setYes;
public void setSetYes(String setYes) {
this.setYes = setYes;
}
private String setNo;
public void setSetNo(String setNo) {
this.setNo = setNo;
}
/**
* 确定按钮点击事件
* 1:定义一个点击事件的接口
* 2: 写一个借口类型的成员属性
* 3:提供一个Set方法
*/
private YesOnClick yesOnClick;
public interface YesOnClick{
void onClick();
}
public void YesOnClick(YesOnClick yesOnClick) {
this.yesOnClick = yesOnClick;
}
/**
* 取消按钮点击事件
* 1:定义一个点击事件的接口
* 2: 写一个借口类型的成员属性
* 3:提供一个Set方法
*/
private NoOnClick noOnClick;
public interface NoOnClick{
void onClick();
}
public void setNoOnClick(NoOnClick noOnClick) {
this.noOnClick = noOnClick;
}
private OutOnClick outOnClick;
private String outStr;
public interface OutOnClick{
void onClick();
}
public void setOutOnClick(String name,OutOnClick outOnClick) {
this.outStr = name;
this.outOnClick = outOnClick;
}
public MyDiyDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initView();
}
private void initView() {
setContentView(R.layout.layout_item_diylog);
out = (Button) findViewById(R.id.out);
out.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
outOnClick.onClick();
}
});
title = (TextView) findViewById(R.id.title);
title.setText(setTitle);
message = (TextView) findViewById(R.id.message);
message.setText(setMessage);
no = (Button) findViewById(R.id.no);
no.setText(setNo);
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
noOnClick.onClick();
dismiss();
}
});
yes = (Button) findViewById(R.id.yes);
yes.setText(setYes);
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//接口回调—>父类引用指向子类对象
yesOnClick.onClick();
dismiss();
}
});
}
}
(3)MainActicity
MyDiyDialog diyDialog = new MyDiyDialog(this);
diyDialog.setSetTitle("新的头");
diyDialog.setSetMessage("新内容");
diyDialog.setSetNo("取消");
diyDialog.setSetYes("确认");
diyDialog.YesOnClick(new MyDiyDialog.YesOnClick() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this, "宾狗!", Toast.LENGTH_SHORT).show();
}
});
diyDialog.setNoOnClick(new MyDiyDialog.NoOnClick() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this, "狗带", Toast.LENGTH_SHORT).show();
}
});
diyDialog.setOutOnClick("关闭", new MyDiyDialog.OutOnClick() {
@Override
public void onClick() {
Toast.makeText(MainActivity.this, "你怎么忍心", Toast.LENGTH_SHORT).show();
}
});
diyDialog.show();