AlertDialog控件
- 自定义对话框通过getView方法也可以显示自定义布局
- PopupWindow可以以下拉和指定位置的方式弹出一个窗口
- 日期和时间控件对话框是AlertDialog的子类,它们通常使用在特定场合
- ProgressDialog是进度对话框,通常与Handler一起使用,用来提示用户等待耗时操作。
一、时间控件
/**
* 时间控件
* @param v
*/
public void btnClick(View v){
Calendar calendar = Calendar.getInstance();
new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {
String text = "新选择了:"+ year + "年" + month + "月" + dayOfMonth + "日";
Toast.makeText(DatePickDialogActivity.this, text, Toast.LENGTH_SHORT).show();
}
}
,calendar.get(Calendar.YEAR)
,calendar.get(Calendar.MONTH)
,calendar.get(Calendar.DAY_OF_MONTH)).show();
}

二、时间控件
/**
* 时间控件
* @param v
*/
public void btnClick2(View v){
Calendar calendar = Calendar.getInstance();
new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
String text = "新选择了:"+hourOfDay + "时" + minute + "分";
Toast.makeText(DatePickDialogActivity.this, text, Toast.LENGTH_SHORT).show();
}
}
// 设置初始时间
,calendar.get(Calendar.HOUR_OF_DAY)
,calendar.get(Calendar.MINUTE)
// true表示采用24小时时差
,true).show();
}

三、进度对话框
Handler handler = new Handler(){
// 主线程(UI)线程
@Override
public void handleMessage(@NonNull Message msg) {
pd.dismiss();
}
};
/**
* 进度条控件
* @param v
*/
public void btnClick3(View v){
showProgress();
// 新建一个子线程
new Thread(){
@Override
public void run() {
for (int i = 0; i < 3; i++) { // 耗时3秒
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
handler.sendEmptyMessage(0);
}
}.start();
}
ProgressDialog pd;
public void showProgress(){
pd = new ProgressDialog(this);
pd.setTitle("任务执行中...");
pd.setMessage("请稍后...");
pd.setCancelable(true);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.show();
}

四、水平进度条
Handler handler = new Handler(){
// 主线程(UI)线程
@Override
public void handleMessage(@NonNull Message msg) {
if(msg.what == 0){
pd.dismiss();
}else if(msg.what == 1){
pd.setProgress(msg.arg1);
}
}
};
/**
* 进度条控件
* @param v
*/
public void btnClick3(View v){
showProgress();
// 新建一个子线程
new Thread(){
@Override
public void run() {
for (int i = 0; i < 10; i++) { // 耗时
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Message message = Message.obtain();
message.arg1 = i;
message.what = 1;
handler.sendMessage(message);
}
handler.sendEmptyMessage(0);
}
}.start();
}
ProgressDialog pd;
public void showProgress(){
pd = new ProgressDialog(this);
pd.setTitle("任务执行中...");
pd.setMessage("请稍后...");
pd.setCancelable(true);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMax(10);
pd.show();
}

**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。