zoukankan      html  css  js  c++  java
  • 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> 

    效果图:

  • 相关阅读:
    day67——前后端传输数据的编码格式、ajax传json数据/传文件、批量插入
    day66——choices参数、MTV/MVC模型、三种创建多对多的方式、AJAX
    day65——聚合函数、分组查询、F与Q查询、django开事务、orm查询优化
    dayⅢ、基本数据类型+运算符作业
    dayⅡ:编程语言+变量+垃圾回收制
    dayⅡ:变量作业
    dayⅠ:计算机基础知识
    ⅩⅥ:无参装饰器
    ⅩⅤ:作业
    ⅩⅤ:名称空间与作用域
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3572893.html
Copyright © 2011-2022 走看看