您的位置:首页 > 移动开发 > Android开发

Android之Dialog详解

2016-03-12 15:42 471 查看
在实际开发中,用系统的对话框会很少,因为太丑了,美工不愿意,多是使用自定义对话框。当然学会系统的,自定义就简单了,所以我们先来学习系统的,后面在写一篇自定义对话框。接下来就看看有哪些对话框吧:

一、普通对话框:



代码:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("警告");
builder.setMessage("危险应用");
builder.setPositiveButton("删除", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {
showToast("您点击的是删除按钮!");

}
});

builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {
showToast("您点击的是取消按钮!");
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();

//关闭对话框
alertDialog.dismiss();


  

二、列表对话框:



代码:

final String[] items = {"小丽","小红","小芳"};
AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
builder2.setTitle("您选择的课程:");
builder2.setItems(items, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {

}
});

builder2.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {

}
});
AlertDialog items_dialog = builder2.create();
items_dialog.show();


  

三、单选对话框:



代码:

final String[] items = {"小丽","小红","小芳"};
AlertDialog.Builder builder3 = new AlertDialog.Builder(this);
builder3.setTitle("请选择您的课程:");
builder3.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int which) {
checkedItem = which;
}
});

builder3.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {
showToast("您选择的是:" + items[checkedItem]);
}
});

builder3.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {

}
});
AlertDialog single_dialog = builder3.create();
single_dialog.show();


四、多选对话框:



代码:

final String[] items = {"小丽","小红","小芳"};
AlertDialog.Builder builder4 = new AlertDialog.Builder(this);
builder4.setTitle("请选择您的课程:");
builder4.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {

@Override
public void onClick(DialogInterface arg0, int which, boolean isChecked) {
// 当用户点击复选框时执行的操作
// 将位置与状态进行绑定
// showToast(which + "****************" +isChecked);
checkedItems[which] = isChecked;
}
});

builder4.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < checkedItems.length; i++) {
if (checkedItems[i]) {
sb.append("第" + i + "个" + items[i] + "选项的状态是:" + checkedItems[i] + "\r\n");
}

}
showToast(sb.toString());
}
});

builder4.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {

}
});
AlertDialog multi_dialog = builder4.create();
multi_dialog.show();


 

五、日期对话框:



代码:

// 通过Calendar类来获取系统的日期
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int monthOfYear = calendar.get(Calendar.MONTH);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);

// 日期对话框

DatePickerDialog dateDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// 监听用户时间的改变
showToast("您选择的日期是:" + year + "年" + (monthOfYear + 1) + "月" + dayOfMonth + "日");

}// 当用户点击日期对话框的日期,对话框的日期根据系统的日期而变化
}, year, monthOfYear, dayOfMonth);

dateDialog.show();


六:时间对话框:



代码:

Calendar calendar2 = Calendar.getInstance();
int hourOfDay = calendar2.get(Calendar.HOUR);
int minute = calendar2.get(Calendar.MINUTE);

// 时间对话框
TimePickerDialog timeDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
showToast("您选择的时间是" + hourOfDay + ":" + minute);
}
}, hourOfDay, minute, true);

timeDialog.show();


  

七:进度条对话框:



代码:

final ProgressDialog progressDialog = new ProgressDialog(this);
// 将进度条设置成水平
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 设置最大值
progressDialog.setMax(100);

progressDialog.show();

// 线程
new Thread(new Runnable() {

@Override
public void run() {
while (true) {
progressDialog.setProgress(progress);
progress++;

SystemClock.sleep(new Random().nextInt(100));

if (progress == 100) {
progressDialog.dismiss();
}
}
}
}).start();


进度对话框:

public void dialog04(View v){

//方法1: 很多 地方 , 干了 比较耗时的事儿 时 会使用到的
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("正在拼命加载中....");
dialog.show();
//
//        try {
//            Thread.sleep(3000);
//            dialog.dismiss();
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

//方法2: 这行 代码 可以 让其 显示, 查看源代码 , 实际上是调用了  上面的这些代码
//ProgressDialog.show(this, "消息", "正在拼命加载中....").show();

//关闭隐藏对话框
dialog.dismiss();

}


  

八:自定义对话框:



代码:

View view = View.inflate(this, R.layout.login_layout, null);

// 通过view去找到这些控件
pwd_first = (EditText) view.findViewById(R.id.pwd_first);
pwd_confirm = (EditText) view.findViewById(R.id.pwd_confirm);
cancle = (Button) view.findViewById(R.id.cancle);
confirm = (Button) view.findViewById(R.id.confirm);

cancle.setOnClickListener(this);
confirm.setOnClickListener(this);

customDialog = new AlertDialog.Builder(this).setTitle("登录").setView(view).create();

customDialog.show();


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: