1、日期、時間拾取器
爲了讓用戶能夠選擇日期和時間,Android提供了日期時間拾取器,分別是DatePicker組件和TimePicker組件。這兩個組件比較簡單,可以再Eclipse的可視化界面中,選擇對應組件並拖拽到佈局文件中。爲了可以再程序中獲取用戶選擇的日期、時間,需要爲DatePickerTimePicker組件添加事件監聽器。其中,DatePicker組件對應的事件監聽器是onDateChangedListener,而TimePicker組件對應的時間監聽器是OnTimeChangedListener。
1)再佈局文件中,添加日期、時間拾取器。
- <DatePicker
- android:id="@+id/dataPicker"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
- <TimePicker
- android:id="@+id/timePicker"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
2)在主活動MainActivity的onCreat()方法中,獲取組件,並將時間時間組件設置爲24小時制。
- DatePicker datePicker = (DatePicker)findViewById(R.id.dataPicker);
- TimePicker timePicker = (TimePicker)findViewById(R.id.timePicker);
- timePicker.setIs24HourView(true);
- Calendar calendar = Calendar.getInstance();//創建日曆對象
- year = calendar.get(Calendar.YEAR);
- month = calendar.get(Calendar.MONTH);
- day = calendar.get(Calendar.DAY_OF_MONTH);
- hour = calendar.get(Calendar.HOUR_OF_DAY);
- minute = calendar.get(Calendar.MINUTE);
- second = calendar.get(Calendar.SECOND);
- //爲日期拾取器設置監聽器
- datePicker.init(year, month, day, new OnDateChangedListener(){
- @Override
- public void onDateChanged(DatePicker arg0, int year, int month,
- int day) {
- MainActivity.this.year = year;
- MainActivity.this.month = month;
- MainActivity.this.day = day;
- show(year,month,day,hour,minute,second);
- }
- });
- //爲時間拾取器設置監聽器
- timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){
- @Override
- public void onTimeChanged(TimePicker view, int hour, int minute) {
- // TODO Auto-generated method stub
- MainActivity.this.hour = hour;
- MainActivity.this.minute = minute;
- show(year,month,day,hour,minute,second);
- }
- });
5)編寫show()方法:
- private void show(int year,int month,int day,int hour,int minute,int second){
- String str = year+"年"+(month+1)+"月"+day+"日"+hour+"時"+minute+"分"+second+"秒";
- Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
- }
本範例的重點在於學習如何使用DatePicker與TimePicker對象來達成動態調整日期與時間的功能,眼尖的讀者應該發現,在範例中,DatePicker實現OnDateChangedListener() 的方法與TimePicker實現OnTimeChangedListener() 的方法是不太相同的。DatePicker對象以init() 這個方法來指定DatePicker初始的年、月、日及OnDateChangedListener()
的事件;而TimePicker對象則是直接以setOnTimeChangedListener() 事件來處理時間改變時程序要做的操作。
在舊版的Android SDK(1.0r2版以前的SDK版本)中,DatePicker對象有提供setOnDateChangedListener() 這個方法,但是在新版的SDK(1.0r2),這個方法被刪除了,所以要實現OnDateChangedListener() 時,必須以init() 方式來重寫OnDateChangedListener();而TimePicker則直接以 setOnTimeChangedListener() 來實現即可。
2、動態修改日期時間
Android API另外提供了其它的對象來實現動態修改日期時間的功能:DatePickerDialog與TimePickerDialog。這兩種類型的對象最大的差別在於DatePicker與TimePicker是直接顯示在屏幕畫面上,而DatePickerDialog與TimePickerDialog對象則是以跳出Dialog的方式來顯示。
DatePickerDialog與TimePickerDialog的實現方式又爲何?以下提供簡單的範例供各位參考:
- <pre name="code" class="java">/* 取得更改日期的Button,添加onClickListener */
- Button dButton=(Button)findViewById(R.id.dPicker);
- dButton.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v){
- /* onClick時跳出DatePickerDialog */
- new DatePickerDialog(EX04_15_1.this,new DatePickerDialog.OnDateSetListener(){
- public void onDateSet(DatePicker view,int year,
- int monthOfYear,int dayOfMonth){
- /* 這裏放更新日期的方法 */
- }
- },mYear,mMonth,mDay).show();
- }
- });
- /* 取得更改時間的Button,添加onClickListener */
- Button tButton=(Button)findViewById(R.id.tPicker);
- tButton.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v){
- /* onClick時跳出TimePickerDialog */
- new TimePickerDialog(EX04_15_1.this,new TimePickerDialog.OnTimeSetListener(){
- public void onTimeSet(TimePicker view,int hourOfDay,int minute){
- /* 這裏放更新時間的方法 */
- }
- },mHour,mMinute,true).show();
- }
- });</pre>
- 不論是DatePicker、TimePicker,或DatePickerDialog、TimePickerDialog,都可以實現動態更改日期時間的功能,要用哪一種方式來實現,端視各位的應用程序需要囉!
- CSDN博客,轉載請標明出處:http://blog.csdn.net/kakaxi1o1/article/details/12256059