Dialog类介绍
Dialog类实现为一个简单的漂浮窗口,完全在Activity中创建。使用基本的Dialog类,你可以创建一个新的实例并设定标题和布局,如下所示:
Dialog d = new Dialog(MyActivity.this);
// Have the new window tint and blur the window it
// obscures.
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
d.setTitle(“Dialog Title”);
d.setContentView(R.layout.dialog_view);
TextView text = (TextView)d.findViewById(R.id.dialogTextView);
text.setText(“This is the text in my dialog”);
一旦按照你的喜好完成配置,使用下面的方法显示它。
d.show();
AlertDialog类
AlertDialog类是最通用的Dialog实现之一。它提供了一些选项来让你对于最通用的对话框使用情形构建屏幕,包括:
❑ 提供1-3个可选按钮来向用户表达信息。这个功能可能和你在任何桌面编程中的经历相似,显示的按钮一般从OK、Cancel、Yes和No中选择。
❑ 以checkbox或radio Button的方式提供选项列表。
❑ 提供一个供用户输入的文本输入框。
创建一个AlertDialog UI,通过创建一个AlertDialog.Builder对象,如下所示:
AlertDialog.Builder ad = new AlertDialog.Builder(context);
然后,你可以设定显示的标题和信息,以可选的形式设定使用的按钮,选择项和用户输入框。还包括设定时间监听来处理用户交互。
接下来的代码给出了一个新的AlertDialog的例子,用于显示一个信息并提供两个按钮选项供选择。点击任何一个按钮,在执行完附加的Click Listener后自动关闭。
Context context = MyActivity.this;
String title = “It is Pitch Black”;
String message = “You are likely to be eaten by a grue.”;
String button1String = “Go Back”;
String button2String = “Move Forward”;
AlertDialog.Builder ad = new AlertDialog.Builder(context);
ad.setTitle(title);
ad.setMessage(message);
ad.setPositiveButton(button1String, new OnClickListener() {
public void onClick(DialogInterface dialog, int arg1) {
eatenByGrue();
}
});
ad.setNegativeButton(button2String, new OnClickListener(){
public void onClick(DialogInterface dialog, int arg1) {
// do nothing
}
});
ad.setCancelable(true);
ad.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
eatenByGrue();
}
});
为了显示已经创建的AlertDialog,调用show方法。
ad.show();
可变通的,你可以在Activity中重写onCreateDialog和onPrepareDialog方法来创建单实例的对话框来保持它们的状态。这个技巧将在本章的后面进行尝试。
特殊的输入Dialog
对话框的一个主要用途是提供用户输入的界面。Android包含一些特殊的对话框,它们封装了控件为通用的用户输入请求提供了便利。它们包括以下的:
❑ DatePickerDialog
让用户从DatePicker View中选择一个日期。构造函数包含一个回调Listener,用来提示调用的Activity日期设定结束。
❑ TimePickerDialog
和DatePickerDialog相似,这个对话框让用户从一个TimePicker View中选择一个时间。
❑ ProgressDialog
一个在消息文本框下显示了一个进度条的对话框。常用于在一个耗时的操作中,让用户了解进行的进度。
使用和管理Dialog
与其在每次需要的时候创建新的对话框实例,不如利用Android提供的onCreateDialog和onPrepareDialog事件处理函数。在Activity中,通过这些处理函数来维护和管理对话框实例。
通过重写onCreateDialog方法,你可以设定需要创建的对话框,当调用showDialog时,显示指定的对话框。和给出的代码片段一样,重写的方法包含一个switch语句来决定哪个对话框需要使用:
static final private int TIME_DIALOG = 1;
@Override
public Dialog onCreateDialog(int id) {
switch(id)
{
case (TIME_DIALOG) :
AlertDialog.Builder timeDialog = new AlertDialog.Builder(this);
timeDialog.setTitle(“The Current Time Is...”);
timeDialog.setMessage(“Now”);
return timeDialog.create();
}
return null;
}
完成初始化的创建后,每次showDialog的调用都会触发onPrepareDialog处理函数。通过重写这个方法,你可以在对话框显示之前及时地修改它。在onPrepareDialog方法里,你可以实时的修改任何显示的值,如下面的片段所示,指定当前的时间给上面创建的对话框:
@Override
public void onPrepareDialog(int id, Dialog dialog) {
switch(id) {
case (TIME_DIALOG) :
SimpleDateFormat sdf = new SimpleDateFormat(“HH:mm:ss”);
Date currentTime;
currentTime = new Date(java.lang.System.currentTimeMillis());
String dateString = sdf.format(currentTime);
AlertDialog timeDialog = (AlertDialog)dialog;
timeDialog.setMessage(dateString);
break;
}
}
一旦你重写了这些方法,你可以通过调用showDialog来显示对话框,如下所示。传入你想显示的对话框的ID,Android会在显示之前创建(如果需要)和准备对话框:
showDialog(TIME_DIALOG);
作为改善资源利用的方式,这个技巧让你的Activity能处理对话框中的状态信息维持。如何的选择或数据输入(例如项目选择和文本输入)都会在每个对话框实例显示之间维持。
Dialog类介绍的更多相关文章
- 非自定义和自定义Dialog的介绍!!!
一.非自定义Dialog的几种形式介绍 转自:http://www.kwstu.com/ArticleView/kwstu_20139682354515 前言 对话框对于应用也是必不可少的一个组件,在 ...
- CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)
前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...
- Android 自定义Dialog类,并在Activity中实现按钮监听。
实际开发中,经常会用到Dialog,比如退出时候会弹出是否退出,或者还有一些编辑框也会用Dialog实现,效果图如下: 开发中遇到的问题无非在于如果在Activity中监听这个Dialog中实现的 ...
- MediaRecorder类介绍
audiocallbackvideojavadescriptorencoding 目录(?)[+] 找到个MediaRecorder类介绍和大家分享一下. Mediarecorder类在官网的介绍和在 ...
- Object类介绍
一.Object类介绍
- 关于JFace的自定义对话框(Dialog类)
仅仅是使用MessageDialog,InputDialog等JFace中现成的对话框类是无法满足实际项目开发需要的. 很多时候都需要自己定制对话框,自定义对话框只要在Dialog类的基础上作扩展就行 ...
- istringstream、ostringstream、stringstream 类介绍 .
istringstream.ostringstream.stringstream 类介绍 . 转自:http://www.cnblogs.com/gamesky/archive/2013/01/09/ ...
- C#中的Dictionary字典类介绍
Dictionary字典类介绍 必须包含名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 键必须是 ...
- Android的一个自定义的动态添加Dialog类
android里面会有自己内置的Dialog的提示框,也算是比较方便的了,但是为了省点时间,我们在项目里面添加了一个自己的Dialog类,这个类实现了能够动态的添加按钮和一些提示语句或者其他的显示效果 ...
随机推荐
- Android Studio配置Git及Git文件状态说明
Android Studio配置Git还是比较简单的,麻烦的是可能中间出现各种问题.如果你想了解或感兴趣,请往下看. 首先你得下载Git客户端,网址:http://git-scm.com/downlo ...
- [C++基础]一个比较常用的配置文件/初始化文件读取程序
在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip ...
- [wikioi 1034][CTSC 1999]家园(网络流)
由于人类对自然的疯狂破坏,人们意识到在大约2300年之后,地球不能再居住了,于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177年冬由于未知的原因,地球环境发生了连锁崩溃,人类必须 ...
- 这些天自身努力的体会,关于java方面的
以前也是接触过java,这学期的软件工程课和周围同学各种比赛取得不错的成绩,确实令人倍感压力.为此这几天使劲脑补了一下java的知识,甚至不惜为此翘课,了解了java中的网络编程,对于sokectse ...
- Winform中的PictureBox读取图像文件无法释放的问题
今天做一拍照程序,相机SDK什么都搞定,就为了显示图像并且保存照片的步骤卡了半天. 原因是预览图像使用了PictureBox,载入图片文件的方式为: pictureBoxPhoto.Image = I ...
- Html-input文本框只能输入数字
onKeyPress="if ((event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;&qu ...
- Java.util.ArrayList详解
java.util.ArrayList就是传说中的动态数组. 继承了关系,有此可看出ArrayList与list的collection的关系 public class ArrayList<E&g ...
- Java基础-内部类-为什么局部和匿名内部类只能访问局部final变量
先看下面这段代码: public class Test { public static void main(String[] args) { } public void test(final int ...
- 遍历HashMap的四种方法
public static void main(String[] args) { Map<String,String> map=new HashMap<String,String&g ...
- TCP/IP详解 笔记一
概述: Tcp-ip让网络上的计算机进行通信,而不管计算机和操作系统是否一样. 分层结构: Tcp/ip协议族是多层协议的组合,而tcp和ip只是其中的两个协议而已. 一个通信举例: 注意图的右上方: ...