Android(安卓)里的对话框Dialog 实现机制基础
16lz
2021-01-26
Android 里的对话框Dialog 实现机制基础
Dialogs 对话框通常都是出现在当前活动的前面,当当前活动弹出对话框后, 当前活动将失去焦点,而对话框将完成与用户交互的任务。对话框通常拿来当通知使用,临时中断用户 当前操作完成一个与当前活动直接相关的小工作,比如登录成功提示框及进度条。 Dialog 类是创建对话框的基类,然而,通常我们并不实例化一个Dialog,取而代之,我们使用如下的 子类: AlertDialog: 一个通常可以带0,1,2个按钮,还可以包含单选或复选的列表。推荐使用, 它通常足够满足用户界面的需要了。 ProgressDialog: 显示为一个进度轮或进度条,因为它是扩展了的AlertDialog,它也同样支持按钮。 DatePickerDialog: 提供用户选择日期的对话框。 TimePickerDialog: 提供用户选择时间的对话框。 显示一个对话框 对话框通常都作为一个活动的一部分而被创建、显示, 通常我们可以重写活动内置的“onCreateDialog(int)”回调方法来创建。当我们重写了这个 回调查方法后,Android系统将自动管理对话框的状态,并将它与当前的活动关联, 某个活动将拥有对话框。也因此,对话框会继承活动的某些属性,例如:当一个对话框打开, 点击“Menu"按钮将显示此活动的"Options menu",音量键也将被活动用来调整音频流。 注意:如果对话框不是通过"onCreateDialog"方法创建的,那么意味着它没有被关联到一个活动 此时,必须调用“setOwnerActivity(Activity)”方法将它关联到一个对话框。 调用“showDialog(int)”来显示一个对话框,传递的整数是一个唯一值,用来标识当前要显示的对话框。 对话框第一次被请求时创建,系统将调用活动的“onCreateDialog(int)”,在此活动中实例化一个Dialog, “onCreateDialog(int)”,“showDialog(int)”两个方法传入的整数是一样的。 一个对话框在显示前,系统都将调用回调方法“onPrepareDialog(int,Dialog)”,所以,如果可以通过 重写此方法可以动态修改对话框。由于"onCreateDialog(int)"只在第一次被请求时创建,所以, 后面再显示时将保持不变。"onPrepareDialog(int,Dialog)"这里的整型参数也与创建、显示时的一样。 当需要用到多个对话框的时候,我们最好在“onCreateDialog(int)”及“onPrepareDialog(int,Dialog)” 方法里Switch,通过对话框的唯一值(创建时传入的整型参数)用来判断一个每个对话框是否创建。 如: static final int DIALOG_PAUSED_ID=0; static final int DIALOG_GAMEOVER_ID=1; 而在“onCreateDialog(int)”回调查方法里: protected Dialog onCreateDialog(int id) { Dialog dilog; switch(id) { case DIALOG_PAUSED_ID: { //do the work to define the pause dialog BREAK; } case DIAOLG_GAMEOVER_ID: { // BREAK; } default: dialog=null; } return dialog; } 显示一个对话框:showDialog(DIALOG_GAMEOVER_ID); --------------------------------------------------------------- 清除对话框 当我们创建一个对话框并将它关联到一个活动后,活动将始终维护对话框的状态,如果确定活动不再需要对话框后, 可以让对话框调用dismiss()来自行清除,更为高效的做法是调用活动的dismissDialog(int),传递的整型数据 与创建时传入的一致。 也许有时我们需要在对话框被清除时处理一些业务,此时我们实现接口:DialogInterface.OnDismissListener, 这个接口只有一个方法:onDismiss(dialogInterface),此方法将在对话框被清除时调用。将接口的实现传递给 setOnDismissListener()。 一个对话框也可以被“取消”,如用户点出了“back”回退或点击“Cancel”按钮明确取消,此时并不会触发“onDismissListener”. 此类事件可以通过下面的方法进行捕获:DialogInterface.OnCancelListener,并 setOnCancelListener();参考资料:http://developer.android.com/guide/topics/ui/dialogs.html
转:http://www.cnblogs.com/runner/archive/2011/12/04/2275293.html
更多相关文章
- Android上获得系统root权限的方法
- 更新Android(安卓)SDK 访问谷歌等无需代理方法
- android开发基础
- Handler内存泄漏和解决方法
- 网络获取图片的方法的重写--较简洁(如果手机缓存里面有就从缓存
- service(改)
- 基于 Android(安卓)NDK 的学习之旅-----Java 调用C(附源码)
- 深入剖析Android消息机制原理
- Unity调用Android(安卓)jar包方法——(三、使用UnitySendMessage