在Android中,時間日期控制項相對來說還是比較豐富的。其中,DatePicker用來實現日期輸入設定,TimePicker用來實現時間輸入設定。DatePickerDialog用來顯示日期對話方塊,TimePickerDialog用來顯示時間對話方塊。AnalogClock用來顯示一個指標式時鐘,DigitalClock用來顯示一個數字式時鐘。
下面就分別對這些時間日期控制項做一個簡單的介紹。
1.DatePicker
在Android中,DatePicker用來實現日期輸入設定,日期的設定範圍為1900年1月1日至2100年12月31日。
1.1常用xml屬性
DatePicker的常用xml屬性1所示:
圖1 DatePicker常用xml屬性
其中,android:calendarViewShown[boolean]用於設定是否顯示calendar view;android:endYear[int]用於設定截至日期;android:maxDate[int]用於設定最大的日期;android:minDate[int]用於設定最小的日期;android:spinnersShown[boolean]用於設定是否顯示spinners;android:startYear[int]用於設定起始日期。
1.2常用方法
DatePicker的常用方法有以下一些:
(1)public CalendarView getCalendarView(); //擷取CalendarView
(2)public boolean getCalendarViewShown(); //擷取CalendarView是否顯示
(3)public int getDayOfMonth(); //擷取當前日期的日
(4)public long getMaxDate(); //擷取最大日期
(5)public long getMinDate(); //擷取最小日期
(6)public int getMonth(); //擷取當前日期的月
(7)public boolean getSpinnersShown(); //擷取Spinners是否顯示
(8)public int getYear(); //擷取當前日期的年
(9)public void init(int year,int monthOfYear,int dayOfMonth,
DatePicker.OnDateChangedListener onDateChangedListener); //初始化日期
(10)public void setCalendarViewShown(boolean shown); //設定是否顯示CalendarView
(11)public void setMaxDate(long maxDate); //設定最大日期
(12)public void setMinDate(long minDate); //設定最小日期
(13)public void setSpinnersShown(boolean shown); //設定是否顯示Spinners
(14)public void updateDate(int year,int month,int dayOfMonth); //更新當前日期
2.TimePicker
在Android中,TimePicker用來實現時間輸入設定,可以選擇12或24小時模式。TimePicker的常用方法有以下一些:
(1)public Integer getCurrentHour(); //擷取目前時間的小時
(2)public Integer getCurrentMinute(); //擷取目前時間的分鐘
(3)public boolean is24HourView(); //擷取是否為24小時模式
(4)public void setCurrentHour(Integer currentHour); //設定目前時間的小時
(5)public void setCurrentMinute(Integer currentMinute); //設定目前時間的分鐘
(6)public void setIs24HourView(Boolean is24HourView); //設定24小時模式
3.DatePickerDialog
在Android中,DatePickerDialog用來顯示日期對話方塊。DatePickerDialog的常用方法有以下一些:
(1)public DatePicker getDatePicker(); //擷取DatePicker中的日期值
(2)public void onClick(DialogInterface dialog,int which); //響應對話方塊中的點擊事件
(3)public void onDateChanged(DatePicker view,int year,int month,int day); //響應日期改變事件
(4)public void updateDate(int year,int monthOfYear,int dayOfMonth); //更新當前日期
4.TimePickerDialog
在Android中,TimePickerDialog用來顯示時間對話方塊。TimePickerDialog的常用方法有以下一些:
(1)public void onClick(DialogInterface dialog,int which); //響應對話方塊中的點擊事件
(2)public void onTimeChanged(TimePicker view,int hourOfDay,int minute); //回應時間改變事件
(3)public void updateTime(int hourOfDay,int minuteOfHour); //更新目前時間
5.AnalogClock
在Android中,AnalogClock用於顯示指標式時鐘,該時鐘僅有時鐘和分鐘兩個指標。
6.DigitalClock
在Android中,DigitalClock用來顯示數字式時鐘,顯示格式為HH:MM:SS AM/PM。
7.執行個體
清楚了上面一些關於時間日期控制項的屬性和方法之後,我們就可以很容易的使用時間日期控制項了。
在本例中,我們通過DatePicker實現了日期輸入設定控制項的顯示,通過TimePicker實現了時間輸入設定控制項的顯示。並在主介面中中添加了兩個Button控制項,分別用於彈出日期設定對話方塊DatePickerDialog和時間設定對話方塊TimePickerDialog。主介面2所示:
圖2 主介面
通過DatePicker控制項中的“+”和“-”按鈕可以分別調整年月日的值,通過TimePicker的“+”和“-”按鈕可以分別調整小時和分鐘的值。要監聽年月日值的改變,需要實現介面android.widget.DatePicker.OnDateChangedListener中的onDateChanged()方法;要監聽小時和分鐘的值的改變,需要實現介面android.widget.TimePicker.OnTimeChangedListener中的onTimeChanged()方法。具體實現方法如下:
View Code
1 /*
2 * Function : 時間改變觸發函數
3 * Param : view時間控制項對象;hourOfDay小時;minute分鐘
4 * Author : 部落格園-依舊淡然
5 */
6 public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
7 Toast.makeText(MainActivity.this, "目前時間為 " + hourOfDay + ":" + minute,
8 Toast.LENGTH_LONG).show();
9 }
10
11 /*
12 * Function : 日期改變觸發函數
13 * Param : view日期控制項對象;year年;monthOfYear月;dayOfMonth日
14 * Author : 部落格園-依舊淡然
15 */
16 public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
17 Toast.makeText(MainActivity.this, "當前日期為" + year + "年" + monthOfYear + "月" + dayOfMonth + "日",
18 Toast.LENGTH_LONG).show();
19 }
通過對DatePicker控制項和TimePicker控制項進行監聽,當點擊DatePicker控制項或TimePicker控制項中的“+”或“-”按鈕時,將彈出當前日期或目前時間的提示資訊,3所示:
圖3 調整日期控制項的日期值
除此之外,我們也可以通過日期對話方塊DatePickerDialog和時間對話方塊TimePickerDialog來調整日期和時間值。通過點擊按鈕“通過DatePickerDialog設定日期值”可以彈出日期對話方塊,通過點擊按鈕“通過TimePickerDialog設定時間值”可以彈出時間對話方塊,時間設定對話方塊4所示。
圖4 時間設定對話方塊
在時間設定對話方塊中,同樣可以調整時間值。需要注意的是,在DatePickerDialog控制項中需要實現DatePickerDialog.OnDateSetListener介面,並實現該介面中的onDateSet()方法。在TimePickerDialog控制項中需要實現TimePickerDialog.OnTimeSetListener介面,並實現該介面中的onTimeSet()方法。具體實現方法如下:
View Code
1 /*
2 * Function : Button按鈕響應
3 * Param : v按鈕對象
4 * Author : 部落格園-依舊淡然
5 */
6 public void onClick(View v) {
7 switch (v.getId()) {
8 case R.id.buttonChangeDate:
9 MyDatePickerDialog myDatePickerDialog = new MyDatePickerDialog();
10 DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this,
11 myDatePickerDialog, mDatePicker.getYear(), mDatePicker.getMonth(), mDatePicker.getDayOfMonth());
12 datePickerDialog.show(); //顯示日期設定對話方塊
13 break;
14 case R.id.buttonChangeTime:
15 MyTimePickerDialog myTimePickerDialog = new MyTimePickerDialog();
16 TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this,
17 myTimePickerDialog, mTimePicker.getCurrentHour(), mTimePicker.getCurrentMinute(), true);
18 timePickerDialog.show(); //顯示時間設定對話方塊
19 break;
20 }
21 }
22
23 /*
24 * Function : 自訂MyDatePickerDialog類,用於實現DatePickerDialog.OnDateSetListener介面,
25 * 當點擊日期設定對話方塊中的“設定”按鈕時觸發該介面方法
26 * Author : 部落格園-依舊淡然
27 */
28 public class MyDatePickerDialog implements DatePickerDialog.OnDateSetListener {
29 public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
30 mDatePicker.updateDate(year, monthOfYear, dayOfMonth); //更新日期值
31 }
32 }
33
34 /*
35 * Function : 自訂MyTimePickerDialog類,用於實現TimePickerDialog.OnTimeSetListener介面,
36 * 當點擊時間設定對話方塊中的“設定”按鈕時觸發該介面方法
37 * Author : 部落格園-依舊淡然
38 */
39 public class MyTimePickerDialog implements TimePickerDialog.OnTimeSetListener {
40 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
41 mTimePicker.setCurrentHour(hourOfDay); //設定TimePicker的小時值
42 mTimePicker.setCurrentMinute(minute); //設定TimePicker的分鐘值
43 }
44 }