AndRoid基本对话框
一、Dialog的各种样式
1.普通对话框
我们一般用匿名内部类的方法
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("这是大标题");
builder.setMessage("这是一个提示信息");
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确认" + which, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消" + which, Toast.LENGTH_SHORT).show();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
2.单选对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("我爱你");
**//builder.setMessage("啦啦啦啦啦");这里注意message提示信息不能和下面的单选列表
//同时出现**
final String[] item = {"男", "女", "人妖"};
builder.setSingleChoiceItems(item, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您选择了" + item[which], Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确认" + which, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消" + which, Toast.LENGTH_SHORT).show();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
3.多选对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("我爱你");
**// builder.setMessage("啦啦啦啦啦"); 这里同样也要注意**
final String[] item = {"男", "女", "人妖"};
boolean[] b = {false, false, false};
builder.setMultiChoiceItems(item, b, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {//判断选中其设置监听
Toast.makeText(MainActivity.this, "选择了" + item[which], Toast.LENGTH_SHORT).show();
}
}
});
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "确认" + which, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消" + which, Toast.LENGTH_SHORT).show();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
4.自定义图片对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater layoutInflater = LayoutInflater.from(this);
View inflate = layoutInflater.inflate(R.layout.layout_picture, null);
ImageView imageView = inflate.findViewById(R.id.iv_1);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();//点击图片消失
}
});
builder.setView(inflate);
alertDialog = builder.create();
alertDialog.show();
5.模拟进度条前进对话框
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() {
int progress=0;
@Override
public void run() {
if(progress==100){
dialog.dismiss();//消失
timer.cancel();
}
dialog.setProgress(progress+=20);
}
},0,1000);//0秒后执行,每隔1000毫秒执行一次
6.调用系统日历对话框
Calendar instance = 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();
}
},instance.get(Calendar.YEAR),instance.get(Calendar.MONTH),instance.get(Calendar.DAY_OF_MONTH)).show();
7.调用系统时间对话框
Calendar instance = Calendar.getInstance();
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();
}
},instance.get(Calendar.HOUR),instance.get(Calendar.MINUTE),false).show();
//false值是24小时,ture是12小时
8.自定义对话框
1.创建一个类
public class MyDialog extends Dialog {
public MyDialog(Context context) {
super(context);
}
private Button no;
private Button yes;
private Button guan;
public interface YesOnClickListener{
void yesOnClick();
}
private YesOnClickListener yesOnClickListener;
public interface NoOnClickListener{
void noOnClick();
}
private NoOnClickListener noOnClickListener;
public void setYesOnClickListener(YesOnClickListener yesOnClickListener) {
this.yesOnClickListener = yesOnClickListener;
}
public void setNoOnClickListener(NoOnClickListener noOnClickListener) {
this.noOnClickListener = noOnClickListener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_twe);
yes=findViewById(R.id.yes);
no=findViewById(R.id.no);
guan = findViewById(R.id.btn_guan);
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
yesOnClickListener.yesOnClick();
dismiss();
}
});
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
noOnClickListener.noOnClick();
dismiss();
}
});
guan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
}
}
2.通过类调方法
MyDialog dialog=new MyDialog(this);
dialog.setYesOnClickListener(new MyDialog.YesOnClickListener() {
@Override
public void yesOnClick() {
Toast.makeText(MainActivity.this, "五星好评", Toast.LENGTH_SHORT).show();
}
});
dialog.setNoOnClickListener(new MyDialog.NoOnClickListener() {
@Override
public void noOnClick() {
Toast.makeText(MainActivity.this, "我要吐槽", Toast.LENGTH_SHORT).show();
}
});
dialog.show();