Android Dialog 对话框详解及示例代码

Android Dialog 对话框

1、Dialog介绍

2、AlertDialog的基本使用

3、自定义对话框 Custom Dialog

一、Dialog介绍

Dialog也是Android中常用的用户界面元素,他同Menu一样也不是View的子类。让我们看一下它的继承关系:

这里要留意一下他的直接子类 AlertDialog,和间接子类 DatePickerDialog,ProgressDialog,TimePickerDialog,其中后三个我们在前面的章节已经讲过,今天我们把重点放在AlertDialog上。

二、AlertDialog的基本使用

AlertDialog对话框是Dialog的子类,它提供一个图标,一个标题,一个文本和3个按钮。我们在Activity里可以自行创建和显示Dialog,也可以通过Activity的方法对其进行管理。我们可以通过下面的例子学习它的使用方法,同样请注意代码中的注释。

1、创建一个项目 Lesson17_HelloAlertDialog,Activity的文件名叫 MainHelloAlertDialog.java

2、res/layout/main.xml 的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">

  <textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/TextView01" android:text="对话框示例" android:textsize="20sp" android:layout_margintop="5dp">
  </textview>

  <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button01" android:text="显示对话框|ShowDialog()" android:textsize="20sp" android:layout_margintop="5dp">
  </button>

  <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button02" android:text="关闭对话框|dismissDialog()" android:textsize="20sp" android:layout_margintop="5dp">
  </button>

  <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button03" android:text="移除对话框|removeDialog()" android:textsize="20sp" android:layout_margintop="5dp">
  </button>
</linearlayout>

3、MainHelloAlertDialog.java的内容如下:

package android.basic.lesson17;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainHelloAlertDialog extends Activity {

  //定义一个对话框的ID
  int Edward_Movie_Dialog = 1;

  // 对话框按钮点击事件监听器
  OnClickListener ocl = new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      switch (which) {
      case Dialog.BUTTON_NEGATIVE:
        Toast.makeText(MainHelloAlertDialog.this, "我不喜欢他的电影。",
            Toast.LENGTH_LONG).show();
        break;
      case Dialog.BUTTON_NEUTRAL:
        Toast.makeText(MainHelloAlertDialog.this, "说不上喜欢不喜欢。",
            Toast.LENGTH_LONG).show();
        break;
      case Dialog.BUTTON_POSITIVE:
        Toast.makeText(MainHelloAlertDialog.this, "我很喜欢他的电影。",
            Toast.LENGTH_LONG).show();
        break;
      }
    }
  };

  @Override
  /** Called when the activity is first created. */
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // 定义对话框对象
    Dialog dialog = new AlertDialog.Builder(this)
    .setIcon(android.R.drawable.btn_star).setTitle("喜好调查")
    .setMessage("你喜欢看爱德华.诺顿Edward Norton的电影吗?")
    .setNegativeButton("不喜欢", ocl).setNeutralButton("一般般", ocl)
    .setPositiveButton("很喜欢", ocl).create();

    //显示对话框
    dialog.show();

    //定义 按钮 UI组件
    Button b1 = (Button) findViewById(R.id.Button01);
    Button b2 = (Button) findViewById(R.id.Button02);
    Button b3 = (Button) findViewById(R.id.Button03);

    //定义按钮的单击事件监听器
    View.OnClickListener b_ocl= new View.OnClickListener() {

      @Override
      public void onClick(View v) {
        switch(v.getId()){
        case R.id.Button01:
          //显示对话框
          showDialog(Edward_Movie_Dialog);
          break;
        case R.id.Button02:
          //关闭对话框 这个功能好傻X,根本点不到的按钮
          dismissDialog(Edward_Movie_Dialog);
          break;
        case R.id.Button03:
          //移除对话框 这个功能好傻X,根本点不到的按钮
          removeDialog(Edward_Movie_Dialog);
          break;
        }
      }
    };

    //绑定按钮监听器
    b1.setOnClickListener(b_ocl);
    b2.setOnClickListener(b_ocl);
    b3.setOnClickListener(b_ocl);

  }

  // 创建会话框时调用
  @Override
  public Dialog onCreateDialog(int id) {
    Toast.makeText(this, "onCreateDialog方法被调用", Toast.LENGTH_LONG).show();

    return new AlertDialog.Builder(this)
    .setIcon(android.R.drawable.btn_star).setTitle("喜好调查")
    .setMessage("你喜欢看爱德华.诺顿Edward Norton的电影吗?")
    .setNegativeButton("不喜欢", ocl).setNeutralButton("一般般", ocl)
    .setPositiveButton("很喜欢", ocl).create();
  }

  // 每次显示对话框之前会被调用
  @Override
  public void onPrepareDialog(int id, Dialog dialog){
    Toast.makeText(this, "onPrepareDialog方法被调用", Toast.LENGTH_LONG).show();
     super.onPrepareDialog(id, dialog);
  }

}

4、运行结果如下:

有兴趣的同学可以考虑一下如何改进关闭和移除对话框按钮。

以上就是对Android Dialog 资料的整理,后续继续补充,谢谢大家对本站的支持!

(0)

相关推荐

  • 8种android 对话框(Dialog)使用方法详解

    本文汇总了android 8种对话框(Dialog)使用方法,分享给大家供大家参考,具体内容如下 1.写在前面 Android提供了丰富的Dialog函数,本文介绍最常用的8种对话框的使用方法,包括普通(包含提示消息和按钮).列表.单选.多选.等待.进度条.编辑.自定义等多种形式,将在第2部分介绍. 有时,我们希望在对话框创建或关闭时完成一些特定的功能,这需要复写Dialog的create().show().dismiss()等方法,将在第3部分介绍. 2.代码示例 2.1 普通Dialog(图

  • Android Dialog对话框用法实例详解

    本文实例讲述了Android Dialog对话框用法.分享给大家供大家参考,具体如下: Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int),dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). 1. onCreat

  • Android中Dialog对话框的使用小结

    前言 最近有些空时间,所以花了一个小时对Dialog对话框使用小结一下,比较基础,希望对你学习有帮助,大牛请直接关闭网页.如果你是新手,建议你亲自敲一遍代码. 先看一下效果: Dialog对话框使用小结 一.普通对话框 AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle("温馨提示");//标题 builder.setMessage("天气冷,注意保暖")

  • 属于自己的Android对话框(Dialog)自定义集合

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Acti

  • Android中自定义对话框(Dialog)的实例代码

    1.修改系统默认的Dialog样式(风格.主题) 2.自定义Dialog布局文件 3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类 第一步: 我们知道Android定义个控件或View的样式都是通过定义其style来实现的,查看Android框架中的主题文件,在源码中的路径:/frameworks/base/core/res/res/values/themes.xml,我们可以看到,Android为Dialog定义了

  • Android Dialog对话框详解

    废话不多说了,直接给大家贴代码了. 布局文件xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_paren

  • Android 对话框(Dialog)大全示例(建立你自己的对话框)

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Acti

  • Android中制作自定义dialog对话框的实例分享

    自定义dialog基础版 很多时候,我们在使用android sdk提供的alerdialog的时候,会因为你的系统的不同而产生不同的效果,就好比如你刷的是MIUI的系统,弹出框都会在顶部显示!这里简单的介绍自定义弹出框的应用. 首先创建布局文件dialog: 代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.and

  • Android 对话框 Dialog使用实例讲解

    对话框 Dialog 什么是对话框 对话框是在当前的页面之上弹出的小窗口, 用于显示一些重要的提示信息, 提示用户的输入,确认信息,或显示某种状态.如 : 显示进度条对话框, 退出提示. 对话框的特点: 1, 当前界面弹出的小窗口. 2, 用户要与它进行交互, 可以接收用户输入的信息, 也可以反馈信息给用户. 常用对话框: 1, 普通对话框 AlertDialog 2, 进度条对话框 ProgressDialog 3, 日期对话框 DatePickerDialog 4, 时间对话框 TimePi

  • Android Dialog 对话框详解及示例代码

    Android Dialog 对话框 1.Dialog介绍 2.AlertDialog的基本使用 3.自定义对话框 Custom Dialog 一.Dialog介绍 Dialog也是Android中常用的用户界面元素,他同Menu一样也不是View的子类.让我们看一下它的继承关系: 这里要留意一下他的直接子类 AlertDialog,和间接子类 DatePickerDialog,ProgressDialog,TimePickerDialog,其中后三个我们在前面的章节已经讲过,今天我们把重点放在

  • Android 事件分发详解及示例代码

    事件分发是Android中非常重要的机制,是用户与界面交互的基础.这篇文章将通过示例打印出的Log,绘制出事件分发的流程图,让大家更容易的去理解Android的事件分发机制. 一.必要的基础知识 1.相关方法 Android中与事件分发相关的方法主要包括dispatchTouchEvent.onInterceptTouchEvent.onTouchEvent三个方法,而事件分发一般会经过三种容器,分别为Activity.ViewGroup.View.下表对这三种容器分别拥有的事件分发相关方法进行

  • Android 对话框(Dialog)大全详解及示例代码

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog). onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个Acti

  • Android ListView组件详解及示例代码

    Android 列表组件 ListView 列表组件是开发中经常用到组件,使用该组件在使用时需要为它提供适配器,由适配器提供来确定显示样式和显示数据. 下面看一个例子: 新建一个项目Lesson8_ListViewTest,Activity name是MainListViewTest . MainListViewTest.java的代码是: package android.basic.lesson8; import android.app.Activity; import android.os.

  • Android Content Provider详解及示例代码

    Android:Content Provider的使用. 1.Content Provider 简介 2.使用现成的Content Provider 3.定义自己的Content Provider 一.Content Provider 简介 我们说Android应用程序的四个核心组件是:Activity.Service.Broadcast Receiver 和 Content Provider.在Android中,应用程序彼此之间相互独立的,它们都运行在自己独立的虚拟机中.Content Pro

  • Android Git submodule详解用法示例

    目录 引入 创建 submodule 本地配置 代码提交 主项目上的代码提交 submodule独立项目上的代码提交 删除 submodule 引入 假定我们有两个项目:Cup 和 Water,其中 Cup 表示主项目,而 Water 表示子模块项目. 其中 Cup 的远程仓库地址为 git@github.com:SkyMissT/Cup.git 而 Water 的远程仓库地址为 git@github.com:SkyMissT/Water.git 接下来,我们希望在 Cup 中添加 Water

  • AngularJs bootstrap详解及示例代码

    AngularJs学习笔记系列第一篇,希望我可以坚持写下去.本文内容主要来自 http://docs.angularjs.org/guide/ 文档的内容,但也加入些许自己的理解与尝试结果. 一.总括 本文用于解释Angular初始化的过程,以及如何在你有需要的时候对Angular进行手工初始化. 二.Angular <script> 标签 本例用于展示如何通过推荐的路径整合Angular,实现自动初始化. <!doctype html> <html xmlns:ng=&qu

  • android 通知Notification详解及实例代码

    android Notification实例详解 1.使用Builder模式来创建 2.必须要设置一个smallIcon,还可以设置setTicker 3.可以设置 setContentTitle,setContentInfo,setContentText,setWhen 4.可以设置setDefaults(闪屏,声音,震动),通过Notification设置flags(能不能被清除) 5.发送需要获取一个NotificationManager(getSystemService来获取);noti

  • Android GPS详解及示例代码

    LBS(Location Based Services)直译的话就是基于地理位置的服务,这里面至少有两层意思,第一要能轻易的获取当前的地理位置,譬如经纬度海拔等,另一个就是在当前位置的基础上提供增值服务,譬如找附近的加油站.餐馆.酒店等.这里面的第一步:获取用户当前位置,我们就可以用Android的GPS定位服务来得到.Android提供了基于网络的定位服务和基于卫星的定位服务两种.在设置->位置和安全设置里面的前三项就是,最后一个增强型GPS是为了辅助快速找卫星的. 那么我们现在就写一个简单的

随机推荐