歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

關於Android裡的Dialog

由做Android應用到做Android手機也有些時間了。總是覺得自己成長的太慢。

後仔細想來,自己沒有好好總結。學而不思則罔。今天就來好好總結下Android裡面的Dialog。

相信大家,都對用Dialog十分熟悉。有兩種方法,

一種是在Activity裡調用showDialog(int),然後在Dialog onCreateDialog裡創建Dialog返回,交由Activity來管理。

一種是自己直接用AlertDialog.Builder自己Create,然後自己調用show(),然後顯示。

我把話先說在前頭,建議用第一種方法去做,這會讓你省去很多麻煩,因為Activity已經幫我們管理Dialog,做了很多有用的事情。

還有幾個,很重要的概念,相信大家都也應該清楚:

1. 我們所有的應用程序所用到的dialog都是繼承自AlertDialog的,包括ProgressDialog,TimePickerDialog,DatePickerDialog等。

2. Dialog不同於Activity,它有自己的Window。

接下來,我們從兩種創建Dialog方法來分析吧。以ProgressDialog為例。

首先,我們來看下,ProgressDialog顯示出來的幾個部分吧。

總的來說,分三部分。

1. Message,Title,等。

2. 進度條,顯示百分比的字符等。

3.下面被隱藏的Button。

為什麼這麼說呢。請跟我看代碼,從第一種方法說起。即ActivitShowDialog(int)

  1. public final void showDialog(int id) {  
  2.         showDialog(id, null);  
  3.     }  
  4. public final boolean showDialog(int id, Bundle args) {  
  5.         if (mManagedDialogs == null) {  
  6.             mManagedDialogs = new SparseArray<ManagedDialog>();  
  7.         }  
  8.         ManagedDialog md = mManagedDialogs.get(id);  
  9.         if (md == null) {  
  10.             md = new ManagedDialog();  
  11.             <span style="color:#000099;">md.mDialog = createDialog(id, null, args);</span>  
  12.             if (md.mDialog == null) {  
  13.                 return false;  
  14.             }  
  15.             mManagedDialogs.put(id, md);  
  16.         }  
  17.   
  18.         md.mArgs = args;  
  19. <span style="color:#333399;">        onPrepareDialog(id, md.mDialog, args);  
  20.         md.mDialog.show();</span>  
  21.         return true;  
  22.     }  
  23.  private Dialog createDialog(Integer dialogId, Bundle state, Bundle args) {  
  24.         <span style="color:#000099;">final Dialog dialog = onCreateDialog(dialogId, args);</span>  
  25.         if (dialog == null) {  
  26.             return null;  
  27.         }  
  28.         <span style="color:#330099;">dialog.dispatchOnCreate(state);</span>  
  29.         return dialog;  
  30.     }  
Copyright © Linux教程網 All Rights Reserved