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

 package com.android.dialog.activity;  

import android.app.Activity;  

import android.app.AlertDialog;  

import android.content.DialogInterface;  

import android.os.Bundle;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.widget.Button;  

import android.widget.TextView;  

public class AlertDialogActivity extends Activity {  

    private TextView tv;  

    private Button btn;  

      

@Override 

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        tv = (TextView)findViewById(R.id.TextView_1);  

        btn = (Button)findViewById(R.id.Button_1);  

        //实例化AlertDialog.Builder对象  

        final AlertDialog.Builder builder = new AlertDialog.Builder(this);  

          

        btn.setOnClickListener(new OnClickListener() {  

            public void onClick(View v) {  

                //设置提示信息,确定按钮  

                builder.setMessage("真的要删除该文件吗?").setPositiveButton("是", new DialogInterface.OnClickListener() {  

                    public void onClick(DialogInterface dialog, int which) {  

                        tv.setText("成功删除");  

                    }  

                    //设置取消按钮  

                }).setNegativeButton("否", new DialogInterface.OnClickListener() {  

                    public void onClick(DialogInterface dialog, int which) {  

                        tv.setText("取消删除");  

                    }  

                });  

                //创建对话框  

                AlertDialog ad = builder.create();  

                //显示对话框  

                ad.show();  

            }  

        }  

        );  

    }  

} 



 main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
   <TextView   
        android:id="@+id/TextView_1"   
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"   
        android:text="测试AlertDialog" 
        /> 
   <Button   
        android:id="@+id/Button_1"   
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"   
        android:text="删除文件" 
        /> 
</LinearLayout> 


 

 效果图:

 

 二.进度对话框(ProgressDialog)

在程序中创建ProgressDialog的步骤:

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

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

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

 ProgressDialogActivity.java

package com.android.progress.activity;  
 import android.app.Activity;  
import android.app.Dialog;  
import android.app.ProgressDialog;  
import android.content.DialogInterface;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
 
public class ProgressDialogActivity extends Activity {  
    private Button btn;  
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        btn = (Button)findViewById(R.id.Button_1);  
        btn.setOnClickListener(new OnClickListener() {  
            public void onClick(View v) {  
                //调用Activity的showDialog()方法,显示进度对话框  
                showDialog(0);  
            }  
        });  
    }  
 
    @Override 
    protected Dialog onCreateDialog(int id) {  
        //对进度对话框进行实例化  
        ProgressDialog dialog = new ProgressDialog(this);  
        //设置显示的标题  
        dialog.setTitle("测试ProgressDialog");  
        dialog.setIndeterminate(true);  
        dialog.setMessage("程序正在Loading...");  
        dialog.setCancelable(true);  
          
        dialog.setButton(Dialog.BUTTON_POSITIVE, "确定",   
                new DialogInterface.OnClickListener() {  
                    @Override 
                    public void onClick(DialogInterface dialog, int which) {  
                        dialog.cancel();  
                    }  
                }  
        );  
          
        return dialog;  
    }  
} 


 

main.xml

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"   
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <Button   
        android:id="@+id/Button_1"   
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"   
        android:text="测试ProgressDialog" 
        /> 
</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

 
 
<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > 
    <TextView           android:text=""         android:id="@+id/TextView_1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         />     <TextView           android:text=""           android:id="@+id/TextView_2"           android:layout_width="wrap_content"           android:layout_height="wrap_content"         />     <Button           android:text="修改日期"           android:id="@+id/Button_1"           android:layout_width="wrap_content"           android:layout_height="wrap_content"         />     <Button           android:text="修改时间"           android:id="@+id/Button_2"           android:layout_width="wrap_content"           android:layout_height="wrap_content"         /> </LinearLayout> 


 

效果图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值