对话框式程序运行中弹出的窗口。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. Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题

    Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致& ...

  2. HBase目录

    1. HBase介绍及简易安装(转) 2. java操作Hbase实例 3. HBase入门基础教程之单机模式与伪分布式模式安装(转) 4. HBase教程 5. 用Java操纵HBase数据库(新建 ...

  3. how to configure logback for Mybatis to print my SQL

    To log SQL statements for particular mybatis mapper set DEBUG (TRACE to see query parameters and res ...

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

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

  5. 掌握Sed命令

    带书签PDF版,喜欢的话,欢迎多提意见和建议,你的支持是血蝙蝠最大的前进动力! http://download.csdn.net/detail/challenge_c_plusplus/6480007 ...

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

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

  7. 还原JavaScript的真实历史~

    问题 ============ JavaScript真的继承自Cmm吗? JavaScript与Java有多少关系? JavaScirpt最初的设计是怎样的?在许多资料,JavaScript的语源被追 ...

  8. 2013年度最新最佳CSS网页设计实例

    CSS在网页设计中扮演着举足轻重的角色,尤其是CSS3和HTML5的出现,让我们更加相信CSS能给我们带来无限的遐想和强有力的视觉冲击.今天我要给大家推荐几个最新CSS佳作,虽然本人没有设计头脑,但还 ...

  9. ComboxEdit 重要属性

    DisplayMember="ComboItemName" ValueMember="ComboItemCode"IsTextEditable="Tr ...

  10. 创建一个pre标签展开折叠的UI组件(原创)

    这些天练习UI组件的编写,顺便模仿一个h5版本的pre标签收缩展开的效果组件: 兼容ie8.9,谷歌,火狐: 图片效果如下: demo.html代码: <!DOCTYPE html> &l ...