动态输入日期与时间

来源:互联网 发布:英文网站源码 编辑:程序博客网 时间:2024/05/21 08:02

 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
0 0
原创粉丝点击