`

Android 基本控件 之 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”);

 

这里补充一下经过查看源码获取到的一些小知识点:

 

1.Dialog对象d的setContentView()方法其实调用的是Window对象window的setContentView()方法。

 

2.当我们通过setContentView()给当前的Window窗口设置了新的视图之后,应该通过该Window对象window来获取其中的控件。在本例中,我们通过d或window都是可以正确的获取到的。

 

TextView text = (TextView)window.findViewById(R.id.dialogTextView);

TextView text = (TextView)d.findViewById(R.id.dialogTextView);

 

 

一旦按照你的喜好完成配置,使用下面的方法显示它。

 

d.show();

 

AlertDialog

 

AlertDialog类是最通用的Dialog实现之一。它提供了一些选项来让你对于最通用的对话框使用情形构建屏幕,包括:

 

提供1-3个可选按钮来向用户表达信息。这个功能可能和你在任何桌面编程中的经历相似,显示的按钮一般从OKCancelYesNo中选择。

 

checkboxradio 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中重写onCreateDialogonPrepareDialog方法来创建单实例的对话框来保持它们的状态。这个技巧将在本章的后面进行尝试。

 

特殊的输入Dialog

 

对话框的一个主要用途是提供用户输入的界面。Android包含一些特殊的对话框,它们封装了控件为通用的用户输入请求提供了便利。它们包括以下的:

 

DatePickerDialog

让用户从DatePicker View中选择一个日期。构造函数包含一个回调Listener,用来提示调用的Activity日期设定结束。

 

TimePickerDialog

DatePickerDialog相似,这个对话框让用户从一个TimePicker View中选择一个时间。

 

ProgressDialog

一个在消息文本框下显示了一个进度条的对话框。常用于在一个耗时的操作中,让用户了解进行的进度。
 

使用和管理Dialog

 

与其在每次需要的时候创建新的对话框实例,不如利用Android提供的onCreateDialogonPrepareDialog事件处理函数。在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来显示对话框,如下所示。传入你想显示的对话框的IDAndroid会在显示之前创建(如果需要)和准备对话框:

 

showDialog(TIME_DIALOG);

 

作为改善资源利用的方式,这个技巧让你的Activity能处理对话框中的状态信息维持。如何的选择或数据输入(例如项目选择和文本输入)都会在每个对话框实例显示之间维持。

分享到:
评论

相关推荐

    Dialog控件的使用

    在本文中,我们将深入探讨如何在Eclipse环境下使用Dialog控件来创建提示框,并了解相关的关键知识点。 首先,我们需要理解Dialog的基本概念。Dialog是安卓系统中一个轻量级的窗口,它可以覆盖在Activity之上,展示...

    自定义控件_Dialog

    在Android中,Dialog是继承自`android.app.Dialog`类的,它是Activity的一个浮动窗口,通常用于打断用户的操作流程,但不会完全阻断与主界面的交互。创建一个Dialog的基本步骤包括:创建Dialog实例,设置布局,然后...

    dialog控件的位置

    在Android开发中,`Dialog`控件是一种非常常见的用户界面元素,它用于显示临时信息或者进行简单的交互操作。当我们需要将一个`Dialog`显示在某个特定控件下方时,这涉及到对话框的位置调整和布局管理。本文将深入...

    安卓Android源码——安卓Android实现Windows风格的Dialog.rar

    在Android SDK中,Dialog是一个继承自`android.app.Dialog`的类,它是用来显示一个浮现在当前Activity之上的小窗口,通常用于展示临时信息或获取用户输入。创建Dialog的基本步骤包括: 1. **创建Dialog实例**:通过...

    一个让你掌握android所有控件的demo

    首先,Android控件是构成应用程序界面的基本元素,如按钮(Button)、文本框(EditText)、单选按钮(RadioButton)、复选框(CheckBox)、图片视图(ImageView)、进度条(ProgressBar)等。这些控件可以组合使用,...

    android自定义dialog和Toast

    在Android开发中,自定义Dialog和Toast是提升用户体验和界面个性化的重要手段。Dialog通常用于向用户展示重要信息或需要用户做出决策的情况,而Toast则用于轻量级的通知,不打断用户的当前操作。以下是对如何自定义...

    自定义时间选择控件+Dialog弹窗

    "自定义时间选择控件+Dialog弹窗"是一个典型的案例,它涉及到Android界面交互、自定义视图以及对话框的使用。接下来,我们将深入探讨这些知识点。 首先,**自定义时间选择控件**通常是为了替代系统默认的时间选择器...

    Android自定义Dialog

    在Android开发中,自定义Dialog是一项常见的需求,它允许开发者根据应用的设计风格和功能需求创建出独特的对话框。本文将深入探讨如何实现Android中的自定义Dialog,包括将Activity转化为Dialog以及如何自由布局。 ...

    疯狂Android控件集合

    "疯狂Android控件集合"这个资源包显然包含了多种Android开发中的控件示例或者源码,供开发者学习和参考。这里我们将深入探讨Android中的一些核心控件以及相关的开发知识。 1. **按钮(Button)**:Button是最常见的...

    Android代码-Dialog

    Android中的Dialog通常用于在主活动之上显示一个浮层窗口,包含警告、确认或提供额外信息。可以通过`AlertDialog.Builder`类来创建一个标准的Dialog,设置标题、消息和按钮。例如: ```java AlertDialog.Builder ...

    Pro Android学习:Dialog小例子

    在Android开发中,Dialog是一种非常重要的UI组件,它用于向用户显示临时信息或者与用户进行交互。本示例“Pro Android学习:Dialog小例子”旨在深入解析如何在Android应用程序中创建和使用Dialogs,以及与Fragment...

    android UI控件

    以上只是Android UI控件部分知识点的概述,实际开发中,开发者还需要了解XML布局文件的编写、主题和样式的应用、触摸事件的传递机制以及如何利用设计模式优化UI结构等更深层次的内容。掌握好这些,才能构建出高效、...

    android时间控件

    在Android开发中,时间控件是用户界面设计中不可或缺的一部分,它允许用户选择或输入特定的时间值。在本文中,我们将深入探讨Android时间控件的使用、类型以及如何在应用程序中实现它们。 首先,Android提供了两种...

    Android应用源码所有Dialog对话框.zip

    在Android应用开发中,对话框(Dialog)是一种重要的用户界面组件,它用于向用户显示临时信息或进行交互操作。在给定的“Android应用源码所有Dialog对话框.zip”压缩包中,包含了多种类型的Dialog实现,是学习和理解...

    android 自定义dialog(嵌套GridView)

    总结起来,创建一个嵌套了GridView的自定义Dialog涉及到了Android布局设计、Adapter模式的应用、Dialog的显示和事件处理等多个知识点,通过实践这些技术,我们可以为用户打造更加丰富和个性化的交互体验。

    Android开发 - 常用控件

    这篇博客"Android开发 - 常用控件"可能详细介绍了Android开发中的一些核心控件及其使用方法。由于没有直接提供博客的具体内容,我将根据Android开发中常见的控件类型和相关知识点进行阐述。 1. **按钮(Button)**:...

    WeiBoAnimation-仿微博效果,弹出dialog时里面的控件回弹动画.zip

    "WeiBoAnimation-仿微博效果,弹出dialog时里面的控件回弹动画.zip" 这个标题表明这是一个与Android开发相关的开源项目,它的主要功能是模仿微博应用中的一个特定交互效果——当Dialog弹出时,Dialog内部的控件会有...

    android自定义dialog样式

    在Android开发中,自定义Dialog样式是一个常见的需求,它能够帮助开发者打造出更加独特且符合应用设计风格的对话框。这篇博客“android自定义dialog样式”深入探讨了如何通过源码和工具来实现这一目标。接下来,我们...

    Android技术知识点:如何改造过时的DialogUI组件

    在Android开发中,DialogUI组件是用户界面设计中不可或缺的一部分,它用于显示临时的通知或获取用户的简短输入。然而,随着时间的推移,系统默认的Dialog样式可能变得过时,不符合现代应用的设计趋势。本文将深入...

Global site tag (gtag.js) - Google Analytics