1.       Dialog是对话框的基类,当我们需要定制Dialog是可以继承该类。由于Android提供了内置的对话框,方便我们的开发,所以很少会继承Dialog,而是继承内置Dialog子类。

        1)        AlertDialog提示框:可含最多3个按钮;支持多选、单选按钮;支持UI交互View等。

        2)        ProgressDialog:继承于AlertDialog,实现进度条功能

        3)        DatePickerDialog:选择日期。

        4)        TimePickerDialog:选择时间。

2.       首先对Dialog使用技术进行介绍,然后再学习每一种Dialog。

        1)        Android系统默认提供了Activity与Dialog的关联技术,即Activity管理了Dialog,同时Dialog也继承了Activity的属性,例如主题等。
所以在Activity的onCreateDialog(int)回调函数中实例化Dialog则意味着Activity与该Dialog关联。
如果在onCreateDialog(int)之外定义Dialog,调用Dialog. setOwnerActivity(Activity)可实现关联。

        2)        通过showDialog(int)即可显示对话框,参数int与onCreateDialog的参数一致,表示与Dialog对应的ID。
每一次调用showDialog时,传递一个参数int值去创建Dialog,只有当第一次创建该Dialog时,系统才会调用onCreateDialog。而onPrepareDialog(int, Dialog)每次都会被调用。

        3)        通过调用Dialog.dismiss或者是Activity.dismissDialog(int)来删除Dialog,即回收它的资源。但如果Dialog已经和Activity关联,即使dismiss之后,Activity仍然保留Dialog引用,调用removeDialog即可删除该引用,也就回收了资源。
如果你想在Dialog.dismiss时执行一些任务,实现DialogInterface.OnDismissListener的onDismiss(DialogInterface)然后再调用Dialog.setOnDismissListener。
当用户点击返回按钮或者是对话框下的取消按钮时,onDismiss仍然被调用。你可区别该行为与调用dismiss行为,用DialogInterface.OnCancelListener 设置setOnCancelListener()来监听取消行为。

3.       创建AlertDialog

        1)        AlertDialog特点,可以有标题Title,有提示内容Message,支持最多3个按钮,支持单选、多选列表。其中按钮分positive,  neutral和negative

        2)        创建AlertDialog 通常使用AlertDialog.Builder,通过AlertDialog.Builder(Context)获取。如何使用AlertDialog.Builder呢?例如在onCreateDialog中实现创建AlertDialog的代码:

                                          

android background层级 android dialog层级_UI


                    

android background层级 android dialog层级_UI_02

        3)        实现列表功能的Dialog

                                         

android background层级 android dialog层级_单选_03


                 

android background层级 android dialog层级_单选_04

        4)        如何支持单选和多选的列表的Dialog

调用setMultiChoiceItems()和setSingleChoiceItems(),比多个参数,即默认check项。

                                      

android background层级 android dialog层级_UI_05


如何根据Activity的生命周期保存Dialog的单选、多选状态是值得关注的。

4.       创建ProgressDialog,它分两种进度条,一种是不确定等待,一种是确定等待。

        1)        不确定等待

                                     

android background层级 android dialog层级_进度条_06


                

android background层级 android dialog层级_UI_07

        2)        确定等待

                                    

android background层级 android dialog层级_UI_08


               

android background层级 android dialog层级_进度条_09

              接下来是调用progressDialog.show或者是在onCreateDialog返回progressDialog。
              最后可通过setProgress(int)和incrementProgressBy(int)更改进度。
              通常是实现是Thread与Handler交互方式。

5.       创建DatePickerDialog和创建TimePickerDialog还是比较简单的,建议看官网的使用向导。

6.       当默认的对话框UI不能满足你的要求,或者你需要个性化的UI。dialog.setContentView和dialog.findViewById能够派上用场。
但通常创建AlertDialog使用的是它的Bulider,但Builder没有setContentView函数,但有setView成员,它接收View参数。
LayoutInflater能够将ViewGroup资源转换为View对象。获取LayoutInflater的方法是 getLayoutInflater() 或者getSystemService(LAYOUT_INFLATER_SERVICE )。