• 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> 

    效果图:

  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3572893.html
Copyright © 2020-2023  润新知