对话框式程序运行中弹出的窗口。Android系统中有四种默认的对话框:警告对话框AlertDialog、进度对话框ProgressDialog、日期选择对话框DatePickerDialog以及时间选择对话框TimePickerDialog。除此之外,我们自定义自已的dialog。

一. 警告对话框(AlertDialog)

Android系统中最常用的对话框是AlertDialog,它是一个提示窗口,需要用户作出选择的。一般会有几个按钮、标题信息、提示信息等。

在程序中创建AlertDialog的步骤:

1.获得AlertDialog的静态内部类Builder对象,由该类来创建对话框,Builder所提供的方法如下:

setTitle():给对话框设置title.

setIcon():给对话框设置图标。

setMessage():设置对话框的提示信息

setItems():设置对话框要显示的一个list,一般用于要显示几个命令时

setSingleChoiceItems():设置对话框显示一个单选的List

setMultiChoiceItems():用来设置对话框显示一系列的复选框。

setPositiveButton():给对话框添加”Yes”按钮。

setNegativeButton():给对话框添加”No”按钮。

2.调用Builder的create( )方法

3.调用AlertDialog的show( )方法显示对话框

下面是一个提示信息对话框的实例:

AlertDialogActivity.java

  1. package com.android.dialog.activity;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.content.DialogInterface;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;
  9. import android.widget.TextView;
  10. public class AlertDialogActivity extends Activity {
  11. private TextView tv;
  12. private Button btn;
  13. @Override
  14. public void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.main);
  17. tv = (TextView)findViewById(R.id.TextView_1);
  18. btn = (Button)findViewById(R.id.Button_1);
  19. //实例化AlertDialog.Builder对象
  20. final AlertDialog.Builder builder = new AlertDialog.Builder(this);
  21. btn.setOnClickListener(new OnClickListener() {
  22. public void onClick(View v) {
  23. //设置提示信息,确定按钮
  24. builder.setMessage("真的要删除该文件吗?").setPositiveButton("是", new DialogInterface.OnClickListener() {
  25. public void onClick(DialogInterface dialog, int which) {
  26. tv.setText("成功删除");
  27. }
  28. //设置取消按钮
  29. }).setNegativeButton("否", new DialogInterface.OnClickListener() {
  30. public void onClick(DialogInterface dialog, int which) {
  31. tv.setText("取消删除");
  32. }
  33. });
  34. //创建对话框
  35. AlertDialog ad = builder.create();
  36. //显示对话框
  37. ad.show();
  38. }
  39. }
  40. );
  41. }
  42. }

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:id="@+id/TextView_1"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="测试AlertDialog"
  12. />
  13. <Button
  14. android:id="@+id/Button_1"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:text="删除文件"
  18. />
  19. </LinearLayout>

效果图:

 二.进度对话框(ProgressDialog)

在程序中创建ProgressDialog的步骤:

1.覆盖Activity的onCreateDialog( )方法,并在其中创建对话框

2.调用Activity的showDialog( )方法,显示进度对话框

下面是一个提示进度对话框的实例:

ProgressDialogActivity.java

  1. package com.android.progress.activity;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.app.ProgressDialog;
  5. import android.content.DialogInterface;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. public class ProgressDialogActivity extends Activity {
  11. private Button btn;
  12. @Override
  13. public void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.main);
  16. btn = (Button)findViewById(R.id.Button_1);
  17. btn.setOnClickListener(new OnClickListener() {
  18. public void onClick(View v) {
  19. //调用Activity的showDialog()方法,显示进度对话框
  20. showDialog(0);
  21. }
  22. });
  23. }
  24. @Override
  25. protected Dialog onCreateDialog(int id) {
  26. //对进度对话框进行实例化
  27. ProgressDialog dialog = new ProgressDialog(this);
  28. //设置显示的标题
  29. dialog.setTitle("测试ProgressDialog");
  30. dialog.setIndeterminate(true);
  31. dialog.setMessage("程序正在Loading...");
  32. dialog.setCancelable(true);
  33. dialog.setButton(Dialog.BUTTON_POSITIVE, "确定",
  34. new DialogInterface.OnClickListener() {
  35. @Override
  36. public void onClick(DialogInterface dialog, int which) {
  37. dialog.cancel();
  38. }
  39. }
  40. );
  41. return dialog;
  42. }
  43. }

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:id="@+id/Button_1"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:text="测试ProgressDialog"
  12. />
  13. </LinearLayout>

效果图:

 三.日期,时间选择对话框(DatePickerDialog、TimePickerDialog)

在程序中创建日期,时间选择对话框的步骤:

1.覆盖Activity的onCreateDialog( )方法,并在其中创建对话框

2.分别在OnDateSetListener的onDateSet( )方法和OnTimeSetListener( )的onTimeSet( )事件方法中更改日期,时间

3.调用Activity的showDialog( )方法,显示进度对话框

MainActivity.java

  1. package com.android.datatime.activity;
  2. import java.util.Calendar;
  3. import android.app.Activity;
  4. import android.app.DatePickerDialog;
  5. import android.app.Dialog;
  6. import android.app.TimePickerDialog;
  7. import android.app.DatePickerDialog.OnDateSetListener;
  8. import android.app.TimePickerDialog.OnTimeSetListener;
  9. import android.os.Bundle;
  10. import android.view.View;
  11. import android.view.View.OnClickListener;
  12. import android.widget.Button;
  13. import android.widget.DatePicker;
  14. import android.widget.TextView;
  15. import android.widget.TimePicker;
  16. public class MainActivity extends Activity {
  17. private Button btn1,btn2;
  18. private TextView tv_1,tv_2;
  19. private Calendar c;//获得日历实例
  20. private int m_year,m_month,m_day;
  21. private int m_hour,m_minute;
  22. public void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.main);
  25. btn1 = (Button)findViewById(R.id.Button_1);
  26. btn2 = (Button)findViewById(R.id.Button_2);
  27. c = Calendar.getInstance();
  28. m_year = c.get(Calendar.YEAR);
  29. m_month = c.get(Calendar.MONTH);
  30. m_day = c.get(Calendar.DAY_OF_MONTH);
  31. m_hour = c.get(Calendar.HOUR);
  32. m_minute = c.get(Calendar.MINUTE);
  33. tv_1 = (TextView)findViewById(R.id.TextView_1);
  34. tv_1.setText(m_year+":"+(m_month+1)+":"+m_day);//设置TextView里的内容为日期
  35. tv_2 = (TextView)findViewById(R.id.TextView_2);
  36. tv_2.setText(m_hour+":"+m_minute);//设置TextView里的内容为时间
  37. btn1.setOnClickListener(new OnClickListener() {
  38. public void onClick(View v) {
  39. showDialog(0);//显示日期对话框
  40. }
  41. });
  42. btn2.setOnClickListener(new OnClickListener() {
  43. public void onClick(View v) {
  44. showDialog(1);//显示时间对话框
  45. }
  46. });
  47. }
  48. //调用Activity的showDialog( )方法显示进对话框
  49. protected Dialog onCreateDialog(int id) {
  50. if(id==0)
  51. return new DatePickerDialog(this,l1,m_year, m_month, m_day);
  52. else
  53. return new TimePickerDialog(this, l2, m_hour, m_minute, false);
  54. }
  55. //设置日期监听器
  56. private OnDateSetListener l1 = new OnDateSetListener() {
  57. public void onDateSet(DatePicker view, int year, int monthOfYear,
  58. int dayOfMonth) {
  59. m_year = year;
  60. m_month = monthOfYear;
  61. m_day = dayOfMonth;
  62. tv_1.setText(m_year+":"+(m_month+1)+":"+m_day);//为TextView设置文本内容,重新显示日期
  63. }
  64. };
  65. //设置时间监听器
  66. private OnTimeSetListener l2 = new OnTimeSetListener() {
  67. public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
  68. m_hour = hourOfDay;
  69. m_minute = minute;
  70. tv_2.setText(m_hour+":"+m_minute);//为TextView设置文本内容,重新显示时间
  71. }
  72. };
  73. }

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:text=""
  9. android:id="@+id/TextView_1"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. />
  13. <TextView
  14. android:text=""
  15. android:id="@+id/TextView_2"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. />
  19. <Button
  20. android:text="修改日期"
  21. android:id="@+id/Button_1"
  22. android:layout_width="wrap_content"
  23. android:layout_height="wrap_content"
  24. />
  25. <Button
  26. android:text="修改时间"
  27. android:id="@+id/Button_2"
  28. android:layout_width="wrap_content"
  29. android:layout_height="wrap_content"
  30. />
  31. </LinearLayout>

效果图:

Android开发学习之对话框浅析的更多相关文章

  1. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  2. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  3. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  4. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  5. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

  6. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

  7. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  8. 最实用的Android开发学习路线分享

    Android开发学习路线分享.Android发展主导移动互联发展进程,在热门行业来说,Android开发堪称火爆,但是,虽然Android有着自身种种优势,但对开发者的专业性要求也是极高,这种要求随 ...

  9. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

随机推荐

  1. Java文件操作大全

    //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPath.exists()) ...

  2. 2.6 《硬啃设计模式》第8章 复制不是很难 - 原型模式(Prototype Pattern)

    案例: 某即时战略游戏,你训练出来各种很强的战士. 为了增加游戏的可玩性,增加了一种复制魔法.实施该魔法,可以复制任意的战士. 你会怎样考虑这个设计? 在继续阅读之前,请先认真思考并写出你的设计,这样 ...

  3. go语言基础之冒泡排序原理

    1.冒泡排序原理 示例: package main //必须有个main包 import "fmt" import "math/rand" import &qu ...

  4. 十个WEB开发人员不可不知的HTML5工具

    Initializr 这是一个HTML5模板创建工具,帮助你得到持续的最新的HTML5样板文件. XRAY XRAY目前支持Safari, Firefox和IE浏览器,XRAY使用了CSS3的多个酷炫 ...

  5. NYOJ-267 郁闷的C小加(二)

    郁闷的C小加(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 聪明的你帮助C小加解决了中缀表达式到后缀表达式的转换(详情请参考“郁闷的C小加(一)”),C小加很 ...

  6. phpcms pc标签 start不生效的原因

    start 和 page 参数不可同时使用,使用了page参数 会造成start 参数无效

  7. Linux下删除相互依赖的包

    今天遇到一个问题,使用RPM 卸载包的时候两个包相互依赖 包A 和包B 卸载A的时候提示需要先卸载B ,反之亦然 经过一番百度 可以在命令后面加参数--nodeps 例如 rpm -e php-jso ...

  8. Android -- 加载大图片的方法

    在android中要加载一张大图片到内存中如果通过如下方式进行: Bitmap bitmap= BitmapFactory.decodeFile("/sdcard/a.jpg"); ...

  9. Cognos两种建模工具对于复杂日期维度的处理比较(上)

    众所周知,在数据仓库中,日期维度是相当重要的.对数据分析的过程中可以从不同的角度去分析,比如按照下面的日期层次去分析数据. 年-季度-月-日 年-月-日 年-周-日 本示例将利用简单的商品销售分析的d ...

  10. 彻底解决 intellij IDEA 卡顿 优化笔记

    由于工作中经常出现分支各种切换,使用Eclipse便不再像以前那么舒服了,不停的修改工作空间,每次修改完工作空间又是一堆一堆的个性化设置,来回的切换,真的很累.我们做软件的,怎么能不去尝试新鲜的呢,毕 ...