关于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.     }  
  • 1
  • 2
  • 3
  • 下一页

相关内容