1.對話框通常是一個小窗口,它出現在當前的Activity上面。此時,對話框得到所有用戶交互,其下方的Activity將失去焦點。
2.Dialog類是創建所有對話框的基類。然而,在實際創建對話框的過程中,應該使用它下列的子類:
AlertDialog:可以包含一個或多個按鈕,選項等的對話框。建議使用;
ProgressDialog:是
的一個拓展。可以顯示進度圈或者進度條;AlertDialog
DatePickerDialog:可以選擇日期的對話框;
TimePickerDialog
:可以選擇時間的對話框;- 其他自定義的對話框:繼承Dialog或者上述類並定義新的佈局文件;
3. 當想要顯示一個對話框的時候,調用showDialog(int)並傳入一個代表對話框編號的整數。當要求的對話框第一次顯示時,系統會調用onCreateDialog(int)來實例化對話框,傳入的整數和上邊的showDialog(int)一樣。如:下列代碼定義了兩種對話框,“暫停”和“遊戲結束”:
1)先定義代表對話框序號的整數:
static final int DIALOG_PAUSED_ID = 0; static final int DIALOG_GAMEOVER_ID = 1;
2)在用switch-case語句來定義onCreateDialog(int)方法:
protected Dialog onCreateDialog(intid) { Dialog dialog; switch(id) { case DIALOG_PAUSED_ID: // do the work to define the pauseDialog break; case DIALOG_GAMEOVER_ID: // do the work to define the game overDialog break; default: dialog = null; } return dialog; }
3)最後調用showDialog(int)來顯示對話框:
showDialog(DIALOG_PAUSED_ID);
4.解除一個對話框:
對Dialog實例調用dismiss()來關閉對話框。
使用dismiss監聽器:當需要在dialog被關閉時進行一些操作,則需要設置on-dismiss監聽器:
先定義DialogInterface.OnDismissListener接口,該接口只含有一個方法-onDismiss(DialogInterface),它會在對話框關閉時調用,然後用setOnDismissListener()綁定監聽器。
5.創建一個AlertDialog:
AlertDialog類是Dialog類的一個子類,能構造大多數的用戶界面。在AlertDialog可以使用以下功能:
1一個標題;
2一段文字消息;
3一個或多個按鈕;
4一列單選或多選框;
創建方法如下:
return new AlertDialog.Builder(this) .setIcon(R.drawable.ic_launcher) .setTitle("This is a dialog" ) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Toast.makeText(getBaseContext(), "OK clicked!" , Toast.LENGTH_SHORT).show(); } } ) .setNegativeButton("Cancel" , new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Toast.makeText(getBaseContext(), "Cancelclicked!", Toast. LENGTH_SHORT).show(); } } ) .setMultiChoiceItems( items, itemsChecked, new DialogInterface.OnMultiChoiceClickListener(){ public void onClick(DialogInterface dialog, int which, boolean isChecked) { Toast.makeText(getBaseContext(), items[which] +(isChecked ? "checked!":" unchecked!" ), Toast.LENGTH_SHORT).show(); } } ).create();
4.創建進度對話框:
進度條對話框可以爲未定義進度的任務創建一個紡紗輪式的進度圈,或者爲一個已定義進度的任務創建一個進度條。還可以提供按鈕,比如取消一個下載任務。
打開進度對話框十分簡單,只需調用ProgressDialog.show()方法即可。無需使用onCreateDialog(int)。如:
ProgressDialog dialog = ProgressDialog.show(MyActivity.this,"", "Loading. Pleasewait...", true);
其中,第一個參數是應用Context,第二個是對話框的標題,第三個是一段消息。最後一個是改進度對話框是否是隱式的。
創建進度條對話框:
1) 用ProgressDiglog(Context)方法初始化進度對話框;
2) 用setProgressStyle(int)方法設置風格;
3) 調用show()來顯示
4) 可以用setProgress(int)或者incrementProgressBy(int)來設置進度;
如:
ProgressDialogprogressDialog; progressDialog = newProgressDialog(mContext); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage("Loading..."); progressDialog.setCancelable(false);