在平常的開發中,一個完整的Android應用肯定少不了控件Dialog對話框的使用。下面對幾種常見的對話框作個簡單的總結。
一、Dialog概述
二、Dialog常見子類及使用
1、AlertDialog
2、ProgressDialog
3、DatePickerDialog
4、TimePickerDialog
三、總結
一、Dialog概述
A dialog is a small window that prompts the user to make a decision or enter additional information.
Dialog對話框是一個小的窗口,用來提示用戶選擇或者輸入信息。
二、Dialog常見類型及使用
Dialog常見的類型有,AlertDialog提示對話框,ProgressDialog進度對話框,DatePickerDialog日期選擇對話框以及TimePickerDialog時間選擇對話框。其中,后面3種對話框都是繼承自AlertDialog的。下面展示它們的基本用法。
AlertDialog
1、AlertDialog概述
A subclass of Dialog that can display one, two or three buttons. If you only want to display a String in this dialog box, use the setMessage() method. If you want to display a more complex view, look up the FrameLayout called "custom" and add your view to it:
AlerDialog是Dialog的一個子類,它可以展示1~3個按鈕。如果你想在對話框內展示一個字符串,使用setMessage()方法。如果你想展示一個更復雜的視圖,你也可以將你自己的視圖添加進去。AlertDialog簡單來說就是一個提示框,我們在App的使用過程中應該經常遇到,比如有的應用會在你刪除某個文件前,彈出一個提示框詢問你是否確定刪除,當你點擊確定后刪除文件,點擊取消時則不刪除。
2、用法簡介
AlertDialog不只能展示一句提示提示,實際上它很強大,可以展示一個字符列表集合,一個單選列表,一個多選列表,如果有需要還能展示一個自己定義的布局文件。
1、基本的提示對話框
private void funShowAlert() {
final 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(DialogActivity.this, "你選擇了是", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DialogActivity.this, "你選擇了否", Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
}
2、展示單選列表的對話框
private void funShowSingle() {
final String[] datas = new String[]{"安徽合肥", "浙江杭州", "湖北武漢", "江西南昌"};
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("選擇你的家鄉");
builder.setSingleChoiceItems(datas, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DialogActivity.this, "你選擇了 " + datas[which], Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
}
3、展示自定義布局文件的對話框
private void funShowCustom() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("用戶登錄");
builder.setView(getLayoutInflater().inflate(R.layout.view_dialog_login, null));
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DialogActivity.this, "開始登錄,請稍候...", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", null);
builder.create().show();
}
ProgressDialog
A dialog showing a progress indicator and an optional text message or view. Only a text message or a view can be used at the same time.
1、概述
進度對話框通常展示一個進度指示條或者一段文本或者視圖,我們在App中經常會遇到這樣的使用,比如用戶登錄時彈出對話框顯示用戶正在登錄中,或者上傳文件時彈出的對話框上顯示的是百分比。
2、簡單使用
private void funShowProgress() {
ProgressDialog mProgressDialog = ProgressDialog.show(this, "提示", "正在下載文件...", true, false);
mProgressDialog.show();
//把進度對話框設置為全局的變量 則可以在別的地方調用dismiss()來取消
}
3、用法解析
我們在這里直接調用了ProgressDialog.show方法實例化了進度對話框,這里有5個參數,分別是上下文,對話框標題,對話框提示消息,對話框進度條是否不明確(這個屬性對于ProgressDailog默認的轉輪模式沒有實際意義,默認下設置為true,它僅僅對帶有ProgressBar的Dialog有作用。修改這個屬性為false后可以實時更新進度條的進度),對話框點擊返回鍵時是否會被取消。
日期選擇對話框 DatePickerDialog
日期選擇對話框主要是用于日期選擇,可以重寫其中的回調方法來獲取獲得的日期,Android 5.0后的對話框設計的還可以。
private void funShowDatePick() {
Calendar mCalendar = Calendar.getInstance();
new DatePickerDialog(
DialogActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String date = year + "年" + monthOfYear + "月" + dayOfMonth + "日";
Toast.makeText(DialogActivity.this, date, Toast.LENGTH_SHORT).show();
}
},
mCalendar.get(Calendar.YEAR),
mCalendar.get(Calendar.MONTH),
mCalendar.get(Calendar.DAY_OF_MONTH)
).show();
}
時間選擇對話框 TimePickerDialog
與日期選擇對話框類似,用來選擇時間。
private void funShowTimePick() {
Calendar mCalendar = Calendar.getInstance();
new TimePickerDialog(
//參數1 上下文
this,
//參數1 監聽
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String date = hourOfDay + ":" + minute;
Toast.makeText(DialogActivity.this, date, Toast.LENGTH_SHORT).show();
}
},
//初始化 時
mCalendar.get(Calendar.HOUR_OF_DAY),
//初始化 分
mCalendar.get(Calendar.MINUTE),
//是否為24小時制
true).show();
}
三、總結
以上簡單地總結了常見的幾種對話框的使用方法,需要的時候可以參考一下。