對話框 Dialog

1.對話框通常是一個小窗口,它出現在當前的Activity上面。此時,對話框得到所有用戶交互,其下方的Activity將失去焦點。

2.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);


發佈了25 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章