Android开发学习之对话框浅析

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

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

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> 

效果图:

 

posted @ 2014-02-28 22:06  xiaochao1234  阅读(424)  评论(1编辑  收藏  举报