版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、* 在文檔中 * 顯示對話框 銷毀對話框 創(chuàng)建彈出對 話框 * 添加按鈕 * 添加列表 創(chuàng)建進度對話框 顯 示進度條 創(chuàng)建自定義對話框 * 類 * DialogAlertDialog DialogFragment * 相關教程 * HelloDatePicker Hello TimePicker 參考 Android 設 計 : 對話框原文鏈接:翻譯:smalljing007 | smalljing007(徐寒靜更 新 :2012.06.07用戶接Dialogs(對話框 通常是出現(xiàn)在當前 Activity 前面的個窗體, 在失去焦點時接受指令與用戶進行交互。對話框通常用于在程 序短暫中斷時通知
2、提示用戶,從而直接影響到正在運行的程 序。(例如:進度條或登錄提示 Dialog 類是創(chuàng)建對話框的基類。但是,您通常不應該直接實例 化個對話框。相反,你應該使用下面的類中的個:AlertDialog (彈出對話框 *它是可以操作 0個, 1個, 2個按鈕或者是復選框,單選按鈕列表的對話框。該對話框是可以創(chuàng)建用戶界面和建議 的對話框類型。詳細參見如何創(chuàng)建 AlertDialog (彈出對話框。ProgressDialog (進度條對話框 *種可以顯示顯示進度輪或進度條的對話框。因為它是種擴展的 AlertDialog (彈出對話框,所以它也支持按 鈕。詳細參見創(chuàng)建 ProgressDialog
3、(進度條對話框。DatePickerDialog (日期選擇對話框 *種允許用戶選擇個日期的對話框。詳細參見 “ 你好日期選擇對話框 ” 教程。TimePickerDialog (時間選擇對話框 *種允許用戶選擇個時間的對話框。詳細參見 “ 你好時間選擇對話框 ” 教程。如果你想定制自的對話框,定義個新的布局,并且要繼承 Dialog 對象或上面列出的任何個類。 詳細參見下面創(chuàng)建個自定義對話框的部分。對話框設計 閱讀 Android 對話框指南的設計準則Dialog 是作為 Activity 的部分顯示 . 常規(guī)的創(chuàng)建個 Dialog 需要用 Activity 的 onCreateDialog
4、(int方法 . 調用后, Android 系統(tǒng)會自動記錄每個對話框的狀態(tài),并且加載對話框方法。有效的區(qū)分每個對話框的 “ 所有者 ” 。所 以每個對話框都會繼承某些 “ 所有者 ” 的事件。例如:打開對話框時菜單鍵顯示為活動選項菜單,音量鍵修改音頻流 所使用的活動。* 注意:* 當你使用 onCreateDialog(int方法創(chuàng)建個對話框時,它不會直接指向 Activity ,你需要使用 setOwnerActivity (Activity 方法來使它成為指向 Activity 的對話框。當你想要顯示個對話框的時候 , 調用 showDialog(int方法 , 并傳給它個唯的你想顯示的對
5、話框的身份識別 在你的 Activity 中,你實例化對話框, Android 會先調用 onCreateDialog(int方法,第時間創(chuàng)建對話框。這個回調方法通過同個你 Show (int 在創(chuàng)建對話框后,返回對象的方法。在對話框方法顯示之前 Android 會先調用 onPrepareDialog(int, Dialog 方法 , 如果你想每次對話框打開的時候改變 對話框的些屬性的話 , 可以在改方法里面寫些代碼 . onCreateDialog(int方法指在第次打開的時候被調用 次 . 如果你沒定義 onPrepareDialog( 方法 , 那么 dialog 會和原先打開的樣 .
6、最好的方式來定義的 onCreateDialog (int 和 onPrepareDialog (int , Dialog , 回調方法是用個 switch 語句來檢 查傳遞到方法的 id 參數(shù)。每種情況下應該檢查個獨特的對話 ID ,然后創(chuàng)建并定義相應的對話框。例如,想象 個游戲使用兩種不同的對話:是表明游戲已暫停,另個表明,游戲結束。首先,為每個對話框定義個整數(shù) ID :static final int DIALOG_PAUSED_ID = 0;static final int DIALOG_GAMEOVER_ID = 1;然后,為每個 ID 用 onCreateDialog (int 的
7、方法定義返回:protected Dialog onCreateDialog(int id Dialog dialog; switch(id case DIALOG_PAUSED_ID: / 定義暫停執(zhí) 行對話框 break; case DIALOG_GAMEOVER_ID: / 定義結束對話框 break; default: dialog = null; return dialog; * 注意:* 在這個例中,在 case 語句里面的定義中沒有具體代碼。屬于對話框范圍以外的段。下面的介紹 創(chuàng)建 AlertDialog ,提供適當例代碼。當要打開帶 ID 的對話框時可以用 showDialog
8、(int 方法來打開指定 ID 的對話框。showDialog(DIALOG_PAUSED_ID;當你準備關閉對話框,你可以通過調用它的 dismiss(方法來進行關閉對話框對象。如果有必要,你也可以用 dismissDialog(int有效的調用對話框上的 dismiss(方法。如果你使用的 onCreateDialog(int方法來創(chuàng)建的對話框(參考上節(jié),然后每次你的對話框中被銷毀時, Activity 對話框對象都會被保留。如果你決定將不再需要該對象或把不重要的徹底清除,那么你應該調用 removeDialog (int 方法。如果對話框顯示,那么這將從內部消除對象的引用。使 用 銷 毀
9、 監(jiān) 聽如果你想在你的應用程序執(zhí)行到某時刻時,對個對話框進行銷毀,那么你應該附加個 on-dismiss 監(jiān)聽,來監(jiān) 聽您的對話框。首先定義 DialogInterface.OnDismissListener接。該接有個方法 onDismiss(DialogInterface,這將是所謂 的當對話框被銷毀。是通過 setOnDismissListener(.接來實現(xiàn) OnDismissListener 的監(jiān)聽。然而,對話框也可以被取消。在某些特定情況下,用戶也會 “ 取消 ” 對話框。出現(xiàn)在,用戶按在返回按鈕對對話框進 行關閉,或者調用 cancel( 方法(也可能是對話框上的個取消按鈕。當對
10、話框被取消時,就觸發(fā) OnDismissListener 。但如果你想明確對話框取消方式(不是正常取消,那你要用注冊 DialogInterface.OnCancelListener 里的 setOnCancelListener(.AlertDialog 是個擴展的對話框類。它能夠創(chuàng)建多數(shù)用戶界面和推薦的對話框類。你使用這種對話框時,只要 符合下面任何特點就可以使用:有標題有正文有到三個按鈕有列表選擇項(單選按鈕或者復選框使用 AlertDialog.Builder 類來創(chuàng)建彈出對話框,用 AlertDialog.Builder(Context方法來創(chuàng)建,在使用 create(方法 下面例主要
11、講如何使用 AlertDialog.Builder 類后,定義彈出對話框的各種屬性。如果你使用 onCreateDialog(方法,在下面的示例代碼中,您可以得到返回的對話框對象。添 加 按 鈕可以使用 set.Button(方法來創(chuàng)建在彈出對話框中并排對左到右顯示按鈕。AlertDialog.Builder builder = new AlertDialog.Builder(this;builder.setMessage("Are you sure you want to exit?".setCancelable(false .setPositiveButton(&quo
12、t;Yes", new DialogInterface.OnClickListener( public voidonClick(DialogInterface dialog, int id MyActivity.this.finish(; .setNegativeButton("No", newDialogInterface.OnClickListener( public void onClick(DialogInterface dialog, int id dialog.cancel(; ;AlertDialog alert = builder.create(;
13、首先,在對話框中用 setMessage(CharSequence創(chuàng)建信息,然后不能在每個按鈕上用 setCancelable(boolean方 法取消定義好的對話框。(所以用戶不能用返回按鈕關閉對話框,使用個 set.Button( 方法,比如 setPositiveButton(方法。在用戶設置好按鈕名稱后定義 DialogInterface.OnClickListener 來監(jiān)聽。* 注意 :* 你在個彈出對話框中只能添加種按鈕類型。也就是說,你不能添加多種 “ 已知類型的 ” 按鈕 。這三 種類型的按鈕是:確定,普通和取消。通過名字可以看出你的按鈕沒有任何關系,但是可以幫忙你確定執(zhí)行哪
14、 種類型的操作。 添 加 列 表可以使用 setItems(方法來創(chuàng)建彈出對話框上的選擇列表對象。final CharSequence items = "Red", "Green", "Blue"AlertDialog.Builder builder = new AlertDialog.Builder(this;builder.setTitle("Pick a color" builder.setItems(items, new DialogInterface.OnClickListener( public voi
15、donClick(DialogInterface dialog, int item Toast.makeText(getApplicationContext(, itemsitem,Toast.LENGTH_SHORT.show(; ; AlertDialog alert = builder.create(;首先用 setTitle(CharSequence給對話框設置個標題。然后用 setItems(添加可以選擇列表和對話框接,然后 用 OnClickListener 方法來監(jiān)聽用戶選擇項的觸發(fā)事件。 添 加 復 選 和 單 選 按 鈕用 setMultiChoiceItems( 和 set
16、SingleChoiceItems(方法可以在 對話框里面添加各自的個多選項(多選框或單選項(點選按鈕。如果你用 onCreateDialog( 方法創(chuàng)建個或多個復選項,只要 Activity 是激活狀態(tài), Android 會幫你管理。 如果用戶退出活動,那么選項將會丟失。* 注意 :* 當用戶離開或暫停這個 Activity 是保存選擇 , 你必須在當前 activity 的生命周期中進行保存與恢復。 如果 你要在關閉這個活動的進程時要長時間保存這選項,那必須要用個數(shù)據(jù)變量存儲來進行長時間保存。 創(chuàng)建如右圖那樣的單選列表對話框,可以使用與例相同的代碼,但是要把 setItems(方法替換為s
17、etSingleChoiceItems(:final CharSequence items = "Red", "Green", "Blue" AlertDialog.Builder builder = newAlertDialog.Builder(this; builder.setTitle("Pick a color" builder.setSingleChoiceItems(items, -1, newDialogInterface.OnClickListener( public void onClick(Di
18、alogInterface dialog, int item eoe 移動開發(fā)者社區(qū)Toast.makeText(getApplicationContext(, itemsitem, Toast.LENGTH_SHORT.show(; ; AlertDialog alert = builder.create(;在 setSingleChoiceItems( 方法中的第個參數(shù),是針對復選對象的整形值。當為 0時,表示列表選擇的是默認 項。當為 “-1” 時表示沒有任何項被選中。進度對話框繼承彈出對話框類。它可以在進程任務運行中,顯示在前面的個紡車的動畫進度條,或者個不確 定進度的進度條,對話框會
19、直提供按鈕,比如取消下載用 ProgressDialog.show(方法可以簡單的打開進度條對話框,例如右側所示的進度對話框,通過 onCreateDialog(int調用可以輕松實現(xiàn)不用管理的對話框,如下所示:ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "","Loading. Please wait.", true;第個參數(shù)是應用背景,第個參數(shù)是標題對話框(左邊為空,第三個參數(shù)顯示信息,和最后個參數(shù)是是否 顯示進度條(這是唯與創(chuàng)建進度條相關,這個在下節(jié)討論。默認樣式的進度對
20、話框是轉輪。如果你想創(chuàng)建個顯示加載進度的進度欄,下節(jié)將對更多的必要代碼進行討 論。顯 示 進 度 條顯示的進展的動畫進度條:1. 實例話進度條對話框類的構造函數(shù), ProgressDialog(Context.2. 可以通過 setProgressStyle(int 來對進度條的樣式 "STYLE_HORIZONTAL"進行設置,比如:信息3. 當你想顯示對話框時,可以調用 show(方法,或者在 onCreateDialog(int方法返回進度條對話框。4. 你可以增加進度條的顯示值,在框中調用 setProgress(int來設置總的完成百分比的值?;蛘哂?increm
21、entProgressBy(int方法來設置加到完成的進度。例如,你的設置可能看起來像這樣:ProgressDialog progressDialog;progressDialog = new ProgressDialog(mContext; progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL; progressDialog.setMessage("Loading."progressDialog.setCancelable(false;設置比較簡單,但更多的代碼是要在主活動的運行中進行創(chuàng)建和更新的。
22、你會發(fā)現(xiàn)在當前活動的界面外必須創(chuàng)建 另個線程來管理進度條。如果你不熟悉使用額外的線程處理程序,看看這個例,是使用另外個線程來增加 個進度對話框管理活動。另線程序進度執(zhí)行進度條的例。這個例是用另個線程來跟蹤主進線程 (當主活動數(shù)字實際到 100. 主活動在每時都會發(fā)送信息給進度對話框, 從而更新進度對話框。package gressdialog; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.os.Bu
23、ndle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class NotificationTest extends Activity static final int PROGRESS_DIALOG = 0; Button button; ProgressThread progressThread; ProgressDia
24、log progressDialog; /* * 當活動是第次創(chuàng)建 . * / public void onCreate(Bundle savedInstanceState super.onCreate(savedInstanceState; setContentView(R.layout.main; / 設置按鈕開始進度對話框 button = (Button findViewById(R.gressDialog; button.setOnClickListener(new OnClickListener( public void onClick(Viewv showDialog
25、(PROGRESS_DIALOG; ; protected Dialog onCreateDialog(int id switch(id case PROGRESS_DIALOG: progressDialog = new ProgressDialog(NotificationTest.this; progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL; progressDialog.setMessage("Loading." return progressDialog; default: return
26、 null; Override protected void onPrepareDialog(int id, Dialog dialog switch(id case PROGRESS_DIALOG: progressDialog.setProgress(0; progressThread = new ProgressThread(handler; progressThread.start(; / Define the Handler that receives messages from the thread and update the progress final Handler han
27、dler = new Handler( public void handleMessage(Message msg int total = msg.arg1; progressDialog.setProgress(total; if (total >= 100 dismissDialog(PROGRESS_DIALOG; progressThread.setState(ProgressThread.STATE_DONE; ; /* * 嵌套類,執(zhí)行進度(記數(shù) * / private class ProgressThread extends Thread Handler mHandler;
28、 final static int STATE_DONE = 0; final static int STATE_RUNNING = 1; int mState; int total; ProgressThread(Handler h mHandler = h; public void run( mState = STATE_RUNNING; total = 0; while (mState = STATE_RUNNING try Thread.sleep(100; catch (InterruptedException e Log.e("ERROR", "Thr
29、ead Interrupted" Message msg = mHandler.obtainMessage(; msg.arg1 = total; mHandler.sendMessage(msg; total+; /* sets the current state for the thread, * used to stop the thread * / public void setState(int state mState = state; 如果你想要個定制設計個對話框,你可以使用 setContentView(View方法,通過根視圖對象或布局資源身份 來定義你的布局,您可
30、以創(chuàng)建自的布局的對話窗布局和部件的元素。例:創(chuàng)建右邊顯示的對話框1. 創(chuàng)建 XML 布局文件,保存為 custom_dialog.xml:這個 XML 定義了個圖片文本框和文本框在同行里。2. 設置上面布局中的圖片文本框和文本框里的元素內容與屬性。Context mContext = getApplicationContext(; Dialog dialog = new Dialog(mContext; dialog.setContentView(R.layout.custom_dialog; dialog.setTitle("Custom Dialog" TextView
31、 text = (TextView dialog.findViewById(R.id.text; text.setText("Hello, this is a custom dialog!" ImageView image = (ImageView dialog.findViewById(R.id.image; image.setImageResource(R.drawable.android;在你實例化對話框后,用 setContentView(int通過標識符設置自定義布局對話框的內容視圖。通過 findViewById(int 找到視圖對象,然后進行修改。3. 現(xiàn)在你可以看到個顯示的對話框了。用對話框類做個對話框必須要有標題。如果沒你沒用 setTitle(方法,標題雖然是空的,但是可以看到。如果你 不想設置所有的標題。你隨時可以使用彈出對話框類來創(chuàng)建自定義對話框。因為 AlertDialog.Builder 類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024門窗行業(yè)綠色環(huán)保認證與推廣合同3篇
- 二零二五版股權激勵計劃執(zhí)行與監(jiān)督合同3篇
- 專業(yè)滑雪教學合作合同書2024版版B版
- 西安交通大學《基礎護理學基本技能1》2023-2024學年第一學期期末試卷
- 武漢晴川學院《心理咨詢倫理》2023-2024學年第一學期期末試卷
- 專業(yè)塔吊故障檢修服務協(xié)議樣本版A版
- 二零二五版建筑垃圾再生利用與建材企業(yè)合作協(xié)議3篇
- 二零二五年度股權代持與公司治理創(chuàng)新合同范本2篇
- 2024版供貨協(xié)議范本
- 2024年網(wǎng)絡安全服務提供商合作協(xié)議 with 服務內容包括攻防演練、安全監(jiān)控
- 無人機航拍技術教案(完整版)
- 人教PEP版(2024)三年級上冊英語Unit 4《Plants around us》單元作業(yè)設計
- 《保密法》培訓課件
- 醫(yī)院項目竣工驗收和工程收尾階段的管理措施專項方案
- 2024年涉密人員考試試題庫保密基本知識試題附答案(考試直接用)
- 2024年桂林中考物理試卷
- DL∕T 5362-2018 水工瀝青混凝土試驗規(guī)程
- (正式版)JC∕T 60023-2024 石膏條板應用技術規(guī)程
- DL-T5054-2016火力發(fā)電廠汽水管道設計規(guī)范
- (權變)領導行為理論
- 家用電器可靠性與壽命預測研究
評論
0/150
提交評論