首页 > 代码库 > Android 自学之日期DatePicker、时间TimePicker选择器

Android 自学之日期DatePicker、时间TimePicker选择器

日期(DatePicker)、时间(TimePicker)是两个比较易用的控件,他们都是从帧布局FrameLayout派生而出的;他们在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期和时间;如果程序需要获取日期和时间,则可以通过为DatePicker添加OnDateChangedListener进行监听,为TimePicker添加OnTimeChangeListenter进行监听来实现。

以一个让用户选择日期和时间的例子来展示下他们的功能和用法。

 layout/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 
 8 <!-- 显示用户输入日期、时间的控件 -->
 9 <EditText android:id="@+id/show"
10     android:layout_width="fill_parent" 
11     android:layout_height="wrap_content"
12     android:editable="false"
13     android:cursorVisible="false"
14     android:text="选择购买本书的具体时间"
15     />
16 <!-- 定义一个DatePicker组件 -->
17 <DatePicker android:id="@+id/datePicker"
18     android:layout_width="match_parent" 
19     android:layout_height="260dip"
20     android:layout_gravity="center_horizontal"
21     />
22 <!-- 定义一个TimePicker组件 -->
23 <TimePicker android:id="@+id/timePicker"
24     android:layout_width="match_parent" 
25     android:layout_height="160dip"
26     android:layout_gravity="center_horizontal"
27     />
28     
29 </LinearLayout>

上面的代码里面定义了三个组件:EditText 、日期、时间

主程序:com.example.choosedate.ChooseDate.java

 1 package com.example.choosedate;
 2 
 3 import java.util.Calendar;
 4 
 5 import android.support.v7.app.ActionBarActivity;
 6 import android.support.v7.app.ActionBar;
 7 import android.support.v4.app.Fragment;
 8 import android.os.Bundle;
 9 import android.view.LayoutInflater;
10 import android.view.Menu;
11 import android.view.MenuItem;
12 import android.view.View;
13 import android.view.ViewGroup;
14 import android.widget.DatePicker;
15 import android.widget.DatePicker.OnDateChangedListener;
16 import android.widget.EditText;
17 import android.widget.TimePicker;
18 import android.widget.TimePicker.OnTimeChangedListener;
19 import android.os.Build;
20 
21 public class ChooseDate extends ActionBarActivity {
22 
23     //定义5个记录当前时间的变量
24     private int year;
25     private int month;
26     private int day;
27     private int hour;
28     private int minute;
29     
30     @Override
31     protected void onCreate(Bundle savedInstanceState) {
32         super.onCreate(savedInstanceState);
33         setContentView(R.layout.main);
34         //获得组件
35         DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker);
36         TimePicker timePicker = (android.widget.TimePicker) findViewById(R.id.timePicker);
37         
38         //获取当前的年、月、日、小时、分钟
39         Calendar c = Calendar.getInstance();
40         year = c.get(Calendar.YEAR);
41         month = c.get(Calendar.MONTH);
42         day = c.get(Calendar.DAY_OF_MONTH);
43         hour = c.get(Calendar.HOUR);
44         minute = c.get(Calendar.MINUTE);
45         
46         //初始化datePicker组件,并指定监听器
47         datePicker.init(year, month, day, new OnDateChangedListener() {
48             
49             @Override
50             public void onDateChanged(DatePicker view, int year, int month,
51                     int day) {
52                 ChooseDate.this.year = year;
53                 ChooseDate.this.month = month;
54                 ChooseDate.this.day = day;
55                 
56                 //显示当前日期、时间
57                 showDate(year, month , day , hour, minute);
58             }
59         });
60         
61         //初始化timePicker组件指定监听器
62         timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
63             
64             @Override
65             public void onTimeChanged(TimePicker view, int hour, int minute) {
66                 ChooseDate.this.hour = hour;
67                 ChooseDate.this.minute = minute;
68                 //显示当前日期、时间
69                 showDate(year, month , day , hour, minute);
70             }
71         });
72             
73     }
74     
75     //定义在EditText中显示当前日期、时间的方法
76     private void showDate(int year, int month , int day
77             , int hour , int minute)
78     {
79         EditText show = (EditText)findViewById(R.id.show);
80         show.setText("日期:" + year + "年" + month + "月"
81             + day + "日  " + hour + "时" + minute + "分");
82     }
83 }

效果图1:选择前

效果图2:选择后