動態輸入日期與時間

 1、日期、時間拾取器

爲了讓用戶能夠選擇日期和時間,Android提供了日期時間拾取器,分別是DatePicker組件和TimePicker組件。這兩個組件比較簡單,可以再Eclipse的可視化界面中,選擇對應組件並拖拽到佈局文件中。爲了可以再程序中獲取用戶選擇的日期、時間,需要爲DatePickerTimePicker組件添加事件監聽器。其中,DatePicker組件對應的事件監聽器是onDateChangedListener,而TimePicker組件對應的時間監聽器是OnTimeChangedListener。

1)再佈局文件中,添加日期、時間拾取器。

[java] view plaincopy
  1. <DatePicker  
  2.     android:id="@+id/dataPicker"  
  3.     android:layout_width="wrap_content"  
  4.     android:layout_height="wrap_content"  
  5.     />  
  6. <TimePicker   
  7.     android:id="@+id/timePicker"  
  8.     android:layout_width="wrap_content"  
  9.     android:layout_height="wrap_content"  
  10.     />  

2)在主活動MainActivity的onCreat()方法中,獲取組件,並將時間時間組件設置爲24小時制。

[java] view plaincopy
  1. DatePicker datePicker = (DatePicker)findViewById(R.id.dataPicker);  
  2. TimePicker timePicker = (TimePicker)findViewById(R.id.timePicker);  
  3. timePicker.setIs24HourView(true);  
3)創建一個日曆對象:

[java] view plaincopy
  1. Calendar calendar = Calendar.getInstance();//創建日曆對象  
  2. year = calendar.get(Calendar.YEAR);  
  3. month = calendar.get(Calendar.MONTH);  
  4. day = calendar.get(Calendar.DAY_OF_MONTH);  
  5. hour = calendar.get(Calendar.HOUR_OF_DAY);  
  6. minute = calendar.get(Calendar.MINUTE);  
  7. second = calendar.get(Calendar.SECOND);  
4)初始化日期拾取器組件,設置時間監聽器:

[java] view plaincopy
  1. //爲日期拾取器設置監聽器  
  2. datePicker.init(year, month, day, new OnDateChangedListener(){  
  3.   
  4.     @Override  
  5.     public void onDateChanged(DatePicker arg0, int year, int month,  
  6.             int day) {  
  7.         MainActivity.this.year = year;  
  8.         MainActivity.this.month = month;  
  9.         MainActivity.this.day = day;  
  10.         show(year,month,day,hour,minute,second);  
  11.     }  
  12.       
  13. });  
  14.   
  15. //爲時間拾取器設置監聽器  
  16. timePicker.setOnTimeChangedListener(new OnTimeChangedListener(){  
  17.   
  18.     @Override  
  19.     public void onTimeChanged(TimePicker view, int hour, int minute) {  
  20.         // TODO Auto-generated method stub  
  21.         MainActivity.this.hour = hour;  
  22.         MainActivity.this.minute = minute;  
  23.         show(year,month,day,hour,minute,second);  
  24.     }  
  25. });  

5)編寫show()方法:

[java] view plaincopy
  1. private void show(int year,int month,int day,int hour,int minute,int second){  
  2.     String str = year+"年"+(month+1)+"月"+day+"日"+hour+"時"+minute+"分"+second+"秒";  
  3.     Toast.makeText(this, str, Toast.LENGTH_SHORT).show();  
  4. }  

本範例的重點在於學習如何使用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的實現方式又爲何?以下提供簡單的範例供各位參考:

[java] view plaincopy
  1. <pre name="code" class="java">/* 取得更改日期的Button,添加onClickListener */  
  2.     Button dButton=(Button)findViewById(R.id.dPicker);  
  3.     dButton.setOnClickListener(new View.OnClickListener(){  
  4.           public void onClick(View v){  
  5.                 /* onClick時跳出DatePickerDialog */  
  6.                 new DatePickerDialog(EX04_15_1.this,new DatePickerDialog.OnDateSetListener(){      
  7.                       public void onDateSet(DatePicker view,int year,  
  8.                               int monthOfYear,int dayOfMonth){  
  9.                         /* 這裏放更新日期的方法 */   
  10.                       }  
  11.                },mYear,mMonth,mDay).show();  
  12.           }  
  13.     });  
  14.     /* 取得更改時間的Button,添加onClickListener */  
  15.     Button tButton=(Button)findViewById(R.id.tPicker);  
  16.     tButton.setOnClickListener(new View.OnClickListener(){  
  17.           public void onClick(View v){  
  18.             /* onClick時跳出TimePickerDialog */  
  19.               new TimePickerDialog(EX04_15_1.this,new TimePickerDialog.OnTimeSetListener(){      
  20.                     public void onTimeSet(TimePicker view,int hourOfDay,int minute){  
  21.                     /* 這裏放更新時間的方法 */   
  22.                     }            
  23.               },mHour,mMinute,true).show();  
  24.           }  
  25.     });</pre>  
[java] view plaincopy
  1. 不論是DatePicker、TimePicker,或DatePickerDialog、TimePickerDialog,都可以實現動態更改日期時間的功能,要用哪一種方式來實現,端視各位的應用程序需要囉!  
  2. CSDN博客,轉載請標明出處:http://blog.csdn.net/kakaxi1o1/article/details/12256059
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章