对话框的八种形式*
1、普通对话框
2、自定义对话框
3、单选对话框
4、多选对话框
5、水平进度条对话框
6、模糊进度条对话框
7、日期对话框
8、时间对话框
区别:
模糊进度条对话框只是在样式上和水平进度条对话框属性不同,
模糊是ProgressDialog.STYLE_SPINNER、
水平是ProgressDialog.STYLE_HORIZONTAL。
对话框类型 | 实现类 | 特殊方法 |
---|---|---|
普通 | AlertDialog.Builder() | |
单选 | AlertDialog.Builder() | setSingleChoiceItems() |
多选 | AlertDialog.Builder() | setMultiChoiceItems() |
日期 | DatePickerDialog | DatePickerDialog(context,DatePickerDialog.OnDateSetListener,year,month,day); |
时间 | TimePickerDialog | TimePickerDialog(context, TimePickerDialog.OnTimeSetListener,时,分,是否24进制); |
水平 | TimePickerDialog | setMultiChoiceItems() |
八种对话框的详细用法
1、普通对话框
//普通对话框
private void normal_dialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher_round);//设置图标
builder.setTitle("这是一个普通的对话框");//设置标题
builder.setMessage("这是一个普通对话框的普通内容");//设置对话框的内容
//设置确定取消按钮
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();
}
});
//创建并展示
builder.create().show();
}
2、自定义对话框
//自定义对话框
AlertDialog alertDialog;
private void zidingyi_dialog() {
//inflate是自己自定义的一个布局
View inflate = View.inflate(MainActivity.this, R.layout.layout_zi, null);
Button but_colse = inflate.findViewById(R.id.but_colse);
but_colse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setView(inflate);
//创建并展示
alertDialog = builder.create();
alertDialog.show();
}
3、单选对话框
//单选按钮对话框
private void radio_dialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher_round);//设置图标
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();
}
});
//创建单选对话框里的数据源
final String[] days = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
builder.setSingleChoiceItems(days, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您选择了:"+days[which], Toast.LENGTH_SHORT).show();
}
});
//创建并展示
builder.create().show();
}
4、多选对话框
//多选按钮对话框
private void check_dialog() {
final String[] string = new String[]{"张","刘","李","王"};
final boolean[] booleans = new boolean[]{true,false,true,false};
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("请挑选您的姓氏!");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for(int i=0;i<booleans.length;i++){
if(booleans[i]){
Toast.makeText(MainActivity.this,"您选择的是:"+string[i],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();
}
});
builder.setMultiChoiceItems(string, booleans, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
booleans[which] = isChecked;
}
});
builder.create().show();
}
5、水平进度条对话框
//进度条对话框
private void pro_dialog() {
final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置水平进度条
progressDialog.setMax(100);
progressDialog.setMessage("正在下载");
progressDialog.show();
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
int pro = 0;
@Override
public void run() {
if(pro==100){
progressDialog.dismiss();
timer.cancel();
}
progressDialog.setProgress(pro+=10);
}
},0,1000);
}
6、模糊进度条对话框
//模糊水平进度条对话框
private void pro_mo_dialog() {
final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//设置水平进度条
progressDialog.setMax(100);
progressDialog.setMessage("正在下载");
progressDialog.show();
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
int pro = 0;
@Override
public void run() {
if(pro==100){
progressDialog.dismiss();
timer.cancel();
}
progressDialog.setProgress(pro+=10);
}
},0,1000);
}
7、日期对话框
//日期对话框
private void date_dialog() {
Calendar calendar = Calendar.getInstance();//获取日历对象
DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.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.MONDAY), calendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}
8、时间对话框
在这里插入代码片//时间对话框
private void time_dialog() {
Calendar calendar = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.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);
timePickerDialog.show();
}
selector选择器
*1、效果
* 2、创建selector选择器
1.首先创建一个选择器:名字自定义:selector1.xml
在drawable下面创建一个XML文件
1、文字改变效果的XML
注意:颜色没有提示键,需要自己手打
2、图片改变效果的XML
* 使用自带的照片
注意:如果不想使用自带的照片的话,就把自己的照片放到drawable里面,不然无法找到该照片
最后在drawable下面生成2个文件夹:chat1和chat2
所有步骤结束,最后在布局里直接使用