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:选择后

你可能感兴趣的:(Datepicker)