关于Android里的Dialog
关于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)
- public final void showDialog(int id) {
- showDialog(id, null);
- }
- public final boolean showDialog(int id, Bundle args) {
- if (mManagedDialogs == null) {
- mManagedDialogs = new SparseArray<ManagedDialog>();
- }
- ManagedDialog md = mManagedDialogs.get(id);
- if (md == null) {
- md = new ManagedDialog();
- <span style="color:#000099;">md.mDialog = createDialog(id, null, args);</span>
- if (md.mDialog == null) {
- return false;
- }
- mManagedDialogs.put(id, md);
- }
- md.mArgs = args;
- <span style="color:#333399;"> onPrepareDialog(id, md.mDialog, args);
- md.mDialog.show();</span>
- return true;
- }
- private Dialog createDialog(Integer dialogId, Bundle state, Bundle args) {
- <span style="color:#000099;">final Dialog dialog = onCreateDialog(dialogId, args);</span>
- if (dialog == null) {
- return null;
- }
- <span style="color:#330099;">dialog.dispatchOnCreate(state);</span>
- return dialog;
- }
|
评论暂时关闭