Android學習筆記23:時間日期控制項的使用

來源:互聯網
上載者:User

  在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     }

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.