Android dialog使用总结

对话框就是用来在界面里弹出,让用户选择的窗口,一般都是 “半透明的背景 + 标题 + 内容说明 + 确认/取消” 这样的形式。对话框就是告诉用户一定要做一个操作才能往下进行,这个在官方文档里面叫modal events(模态事件)。

下面总结一下Android下面对话框的使用。

一般常用的dialog

Android的dialog使用一般的流程是:

提示对话框AlertDialog

1、使用builder或者构造函数初始化

2、setTitle 、setMessage 设置dialog的内容

3、setPositiveButton(设置确认按钮的显示和按下的行为),setNegativeButton(设置取消按钮的显示和按下的行为),setNeutralButton(设置中性按钮的显示和按下的行为) 设置要显示的按钮和按钮相应的处理,setIcon可以设置标题旁边的图标显示的图片

4、调用Crete(),创建这个AlertDialog

4、调用show()显示对话框

 1             AlertDialog.Builder builder = new  AlertDialog.Builder(this).setTitle("yes").setMessage("Are you sure ?").setIcon(R.drawable.ic_launcher);
 2             builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
 3
 4                 @Override
 5                 public void onClick(DialogInterface dialog, int which) {
 6                     // TODO Auto-generated method stub
 7                     Log.d(TAG, "which = "+which+",DialogInterface.BUTTON_NEGATIVE="+DialogInterface.BUTTON_NEGATIVE);
 8                 }
 9             });
10             builder.setNeutralButton("帮助", new DialogInterface.OnClickListener() {
11
12                 @Override
13                 public void onClick(DialogInterface dialog, int which) {
14                     // TODO Auto-generated method stub
15                     Log.d(TAG, "which = "+which+",DialogInterface.BUTTON_NEUTRAL="+DialogInterface.BUTTON_NEUTRAL);
16                 }
17             });
18             builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
19
20                 @Override
21                 public void onClick(DialogInterface dialog, int which) {
22                     // TODO Auto-generated method stub
23                     Log.d(TAG, "which = "+which+",DialogInterface.BUTTON_POSITIVE="+DialogInterface.BUTTON_POSITIVE);
24                 }
25             });
26
27             AlertDialog ad = builder.create();
28             ad.setCancelable(true);
29             ad.setCanceledOnTouchOutside(false);
30             ad.show();
还有两个解释的点1、ad.setCancelable(true)这个是指是否响应BACK键,然后关闭dialog

ad.setCanceledOnTouchOutside(false)是指用户去摸dialog之外的空间是否关闭dialog
我现在做的项目一般就是这样设置的,至于默认这两个的值是true还是false,好像4.0的前后是有差别的,其实每次设置一下就好了。

2、这个可以每一个按键都new一个匿名类,或者几个按键几个dialog都使用一个 dialogDialogInterface.OnClickListener   因为onClick(DialogInterface dialog, int which)这个函数的两个入参够从来区分dialog和按键了

Alertdialog可以使用列表和adapter来作为单选或者多选的对话框,使用setAdapter()

 1             AlertDialog.Builder build2 = new  AlertDialog.Builder(this).setTitle("请选择喜欢球员").setIcon(R.drawable.ic_launcher);
 2             build2.setAdapter(new ArrayAdapter<String>(this,R.layout.alert_item, new String[]{"大罗","小罗","c罗"}), new DialogInterface.OnClickListener() {
 3
 4                 @Override
 5                 public void onClick(DialogInterface dialog, int which) {
 6                     // TODO Auto-generated method stub
 7                     Log.d(TAG, "which="+which);
 8                 }
 9             });
10             AlertDialog ad2 = build2.create();
11             ad2.setCancelable(true);
12             ad2.setCanceledOnTouchOutside(false);
13             ad2.show();
R.layout.alert_item的内容就是一个textView
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/alert_item_text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="14sp"
    android:padding="10dp"
 />


Alertdialog可以变成多选对话框,使用setMultiChoiceItems(或者setSingleChoiceItems变单选使用方式差不多)
 1 AlertDialog.Builder build3 = new AlertDialog.Builder(this)
 2                     .setTitle("请选择你喜欢的水果(多选)").setIcon(R.drawable.ic_launcher);
 3             // 第一个字符串数组是用来设置显示的选项列表,第二个boolean的数组是用来设置默认是否checked的选项
 4             // 这个的回调onClick,有三个参数,多了一个checked的参数,作用不用多说
 5             build3.setMultiChoiceItems(new String[] { "苹果", "香蕉", "梨" },
 6                     new boolean[] { true, false, true },
 7                     new DialogInterface.OnMultiChoiceClickListener() {
 8
 9                         @Override
10                         public void onClick(DialogInterface dialog, int which,
11                                 boolean isChecked) {
12                             // TODO Auto-generated method stub
13                             Log.d(TAG, "which=" + which + ",isChecked="
14                                     + isChecked);
15                         }
16
17                     });
18             build3.setNegativeButton("取消",
19                     new DialogInterface.OnClickListener() {
20
21                         @Override
22                         public void onClick(DialogInterface dialog, int which) {
23                             // TODO Auto-generated method stub
24                             Log.d(TAG, "which = " + which
25                                     + ",DialogInterface.BUTTON_NEGATIVE="
26                                     + DialogInterface.BUTTON_NEGATIVE);
27                         }
28                     });
29             build3.setPositiveButton("确定",
30                     new DialogInterface.OnClickListener() {
31
32                         @Override
33                         public void onClick(DialogInterface dialog, int which) {
34                             // TODO Auto-generated method stub
35                             Log.d(TAG, "which = " + which
36                                     + ",DialogInterface.BUTTON_POSITIVE="
37                                     + DialogInterface.BUTTON_POSITIVE);
38                         }
39                     });
40             AlertDialog ad3 = build3.create();
41             ad3.setCancelable(true);
42             ad3.setCanceledOnTouchOutside(false);
43             ad3.show();
 

日期、时间 选择对话框DatePickerDialog、TimePickerDialog

1、使用初始化函数新建DatePickerDialog、TimePickerDialog

2、设置时间、日期设置处理函数

3、设置日期和时间,包括最大最小可选择的日期和时间

DatePickerDialog
 1             Calendar ca = Calendar.getInstance();
 2             DatePickerDialog datePickerDialog = new DatePickerDialog(this, new OnDateSetListener() {
 3
 4                 @Override
 5                 public void onDateSet(DatePicker view, int year, int monthOfYear,
 6                         int dayOfMonth) {
 7                     // TODO Auto-generated method stub
 8                     Log.d(TAG, "year="+year+",monthOfYear="+monthOfYear+",dayOfMonth="+dayOfMonth);
 9                 }
10             }, ca.get(Calendar.YEAR), ca.get(Calendar.MONTH), ca.get(Calendar.DAY_OF_MONTH));
11             datePickerDialog.show();
TimePickerDialog
 1             Calendar caTime = Calendar.getInstance();
 2             TimePickerDialog timePickerDialog = new TimePickerDialog(this, new OnTimeSetListener() {
 3
 4                 @Override
 5                 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
 6                     // TODO Auto-generated method stub
 7                     Log.d(TAG, "hourOfDay="+hourOfDay+",minute="+minute);
 8                 }
 9             }, caTime.get(caTime.HOUR_OF_DAY), caTime.get(caTime.MINUTE), true);
10             timePickerDialog.show();

进度对话框progressDialog

ProgressDialog其实用法和其他dialog差不多,但是,下面的代码说的很清楚,ShowPbTask就是一个
 1             //如果只是简单的显示一下进度条,直接就可以用ProgressDialog的静态类
 2             //ProgressDialog.show(context, title, message);
 3             mPd = new ProgressDialog(this);
 4             // ProgressDialog.STYLE_SPINNER---就是转圈,要显示进度可以自己setMessgae去设置
 5             // ProgressDialog.STYLE_HORIZONTAL---显示你setPorgess的值
 6             //mPd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
 7             mPd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
 8             mPd.setTitle("正在处理");
 9             //设置进度条显示的最大值
10             mPd.setMax(100);
11             mPd.setCancelable(true);
12             mPd.setCanceledOnTouchOutside(false);
13             mPd.show();
14             // 一般progressDialog都会搭配一个后台的进程使用,下面的这个就是用AsyncTask来模拟一下更新的过程,更新使用mPd.setProgress或者setMessage来更新
15             mShowPbTask = new ShowPbTask();
16             mShowPbTask.execute();  
两种样式的progressdialog

自定义样式的dialog

1、自定义的layout,inflate成view

2、把这个view通过dialog的setview,设置到dialog中,至于按键的处理需要自己去设置onlicklistener来处理,和普通的控件处理出不多

3、show()

cancel和dismiss关闭dilaog

cancel和dismis都是用来关闭dialog的,那有啥区别呢:下面的代码来着Dialog.java,它的注释已经说的很清楚了

cancel也会调用dismiss,cancel会调用你定义的OnCancelListener(如果有通过setOnCancelListener注册过)

 1     /**
 2      * Cancel the dialog.  This is essentially the same as calling {@link #dismiss()}, but it will
 3      * also call your {@link DialogInterface.OnCancelListener} (if registered).
 4      */
 5     public void cancel() {
 6         if (!mCanceled && mCancelMessage != null) {
 7             mCanceled = true;
 8             // Obtain a new message so this dialog can be re-used
 9             Message.obtain(mCancelMessage).sendToTarget();
10         }
11         dismiss();
12     }
时间: 2024-10-25 13:54:53

Android dialog使用总结的相关文章

Android dialog 全屏

Android中让Dialog全屏: 一.在style中定义样式: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="Transparent"> <item name="android:windowBackground">@color/transparent_background</item>

7种形式的Android Dialog使用举例

7种形式的Android Dialog使用举例 在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方

Android Dialog 的一些特性

1. Dialog 与 AlertDialog 的区别. AlertDialog 是一种特殊形式的 Dialog.这个类中,我们可以添加一个,两个或者三个按钮,可以设置标题.所以,当我们想使用 AlertDialog 默认的按钮形式,用 AlertDialog 更加方便,而且有一个类 AlertDialog.Builder 很方便创建一个 AlertDialog. 2. Dialog 与 AlertDialog 写代码时需注意的事项. 我们可以给一个 Dialog 用自定义的 Layout.有两

几种不同的Android Dialog

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方法代码如下: ? 1 2 3 4 5 6 7 8

在 ANDROID DIALOG中使用

我想再android Dialog中使用 autocompletetext, 在开发测试过程中碰见不少问题,把最后的成品发布出来,避免大家走弯路,下面的代码是完整代码详细代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 5

自定义Android Dialog

private void showDialog() { mDialog = new Dialog(this); mDialog.setCanceledOnTouchOutside(true); Window dialogWindow = mDialog.getWindow(); dialogWindow.setBackgroundDrawable(new ColorDrawable(0)); dialogWindow.setContentView(R.layout.set_public_clie

Android控件——7种形式的Android Dialog使用举例

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方法代码如下: ? 1 2 3 4 5 6 7 8

Android Dialog使用举例

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方法代码如下: protected void di

Android控件——7种形式的Android Dialog使用举例(转载)

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式. 创建dialog对话框方法代码如下: 1 2 3 4 5 6 7 8 9

Android Dialog常见使用

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择,从而增强APP与用户之间的交互体验,使得APP灵活性提高了,也达到了Android最初的智能目标.这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助. 下面就一一介绍Android开发常用的 几种 Dial