Dialog是任何系统都必须有的一个控件,作为辅助窗口,用于显示一些消息,或请求用户采取一引起操作等。
在Android中也不例外,基本使用可能参看文档。
使用时的注意事项
1. BACK键能取消掉对话框(dismiss),但是却不会触发其onOkey和onCancel回调接口,所以如果你的对话框会改某些状态,一定要注意还有第三种方式取消对话框。
2. 尽量少用模态对话框(Model dialog),如果Dialog.setCancellable(false),就变成了一个模态对话框,除了程序内部把其Dismiss,否则按什么键都无法将其取消。这是极差的用户体验,对话框本身就是一种干扰,再无法取消会把用户搞疯的。所以除非特别有必要,也即当执行某个操作时不希望被打破,才可以使用模态对话框。
3. 尽量少用对话框,它对用户是一种干扰,除非需要用户做操作,或者做出选择。通常的一般性的通知用Toast或者Notification就足够了。
4. 不要使用对话框风格的Activity,也即把Activity变成一个对话框。因为这样是自已定义的布局,与系统Dialog的风格可能会不一致。最严重的是当系统风格发生变化,Dialog的子类会变化,但Activity式的对话框就不会变化。可以在ICS中找一找Activity对话框,你会发现其OK是在左边,而ICS中系统Dialog的OK都是在右边的。
5. 尽量保证Dialog对象活在Activity的生命周期之内,也即至多是在onCreate()和onDestroy()之间。
6. 要想到和测试到Activity在其Dialog.dismiss()之前死掉的情况。因为Activity必须依附于某个正在显示的Activity实例,当显示和取消的时候其Activity实例必须存在,否则就会有"IllegalArgumentException: View not attached to window manager"。
7. Dialog.show()必须在主线程里调用,但Dialog.dismiss()却可以在任何线程中调用。
三种使用方式比较
1. 直接创建一个局部的Dialog对象
优点是变量是局部的容易理解和维护。缺点是Dialog对象难以控制,容易引发RuntimeException。
2. 把Dialog对象变成Activity的域
优点是Dialog对象可以重复利用,且Activity可以控制以保证Dialog不会在Activity生命周期外显示。是推荐的使用方式。
3. 用Activity的方法onCreateDialog(), showDialog()和dismissDialog()
优点是Frameworks会帮忙照看Dialog,在大多数情况下这是推荐的做法。但是对于Activity提前死掉的情况,此方法必有RuntimeException,且无法回避。
实例
分享到:
相关推荐
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#55000000"/> android:angle="270" android:type="linear" android:endColor="#...
这是Pro Android学习dialog部分的例子源代码。
自动更新:Dialog和Notification 两种方式,
各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...
Android自定义控件:可重用的自定义Dialog类
底部弹出dialog 添加简单的进入 退出动画
Android仿IosDialog控件
Dialog 很经常用到的一个控件,但大多时候系统默认的样式是不满足于项目使用的,故自定义了一套合适的Dialog模板方便日常使用。
整理了常用的dialog 包括:single Choice Dialog Multiple choice Dialog Input Dialog Progress Dialog
我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,...而关闭后弹出对话框,就很别扭了
Android之IOS风格Dialog对话框 Android之IOS风格Dialog对话框 Android之IOS风格Dialog对话框
jQueryUI系统教程之一:dialog[定义].pdf
android 自定dialogandroid 自定dialogandroid 自定dialogandroid 自定dialogandroid 自定dialogandroid 自定dialogandroid 自定dialogandroid 自定dialogandroid 自定dialog
android 自定义dialog 带有各种显示动画效果
Android_对话框(Dialog)大全 自定义
Android高仿IOS的Dialog效果
版本错误的处理Install Repository and sync project show in file Show in Project Structure dialog
vc里面所有快捷键,vc里面所有快捷键,贴出来共享。 共分四部分:dialog, image, main and text。 每部分里面有若干项,每项由命令、快捷键和注释组成。
Two Step Picker Dialog For Android Description Two step picker dialog for Android that helps you easily pick nested data on android. Usage To use two step picker dialog you must add it as a ...
认识AndroidDialog :rosette: 介绍AndroidDialog是适用于iOS的Android Dialog框架。 :clipboard: 要求类型要求平台的iOS 8.0+ 苹果系统不适用操作系统不适用watchOS 不适用Linux 不适用集成开发环境Xcode 9.3+ 语...