在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()方法。具体实现方法如下:
/* * Function : 时间改变触发函数 * Param : view时间控件对象;hourOfDay小时;minute分钟 * Author : 博客园-依旧淡然 */ public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { Toast.makeText(MainActivity.this, "当前时间为 " + hourOfDay + ":" + minute, Toast.LENGTH_LONG).show(); } /* * Function : 日期改变触发函数 * Param : view日期控件对象;year年;monthOfYear月;dayOfMonth日 * Author : 博客园-依旧淡然 */ public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Toast.makeText(MainActivity.this, "当前日期为" + year + "年" + monthOfYear + "月" + dayOfMonth + "日", Toast.LENGTH_LONG).show(); }
通过对DatePicker控件和TimePicker控件进行监听,当点击DatePicker控件或TimePicker控件中的“+”或“-”按钮时,将弹出当前日期或当前时间的提示信息,如图3所示:
图3 调整日期控件的日期值
除此之外,我们也可以通过日期对话框DatePickerDialog和时间 对话框TimePickerDialog来调整日期和时间值。通过点击按钮“通过DatePickerDialog设置日期值”可以弹出日期对话框,通过 点击按钮“通过TimePickerDialog设置时间值”可以弹出时间对话框,时间设置对话框如图4所示。
图4 时间设置对话框
在时间设置对话框中,同样可以调整时间值。需要注意的是,在 DatePickerDialog控件中需要实现DatePickerDialog.OnDateSetListener接口,并实现该接口中的 onDateSet()方法。在TimePickerDialog控件中需要实现TimePickerDialog.OnTimeSetListener 接口,并实现该接口中的onTimeSet()方法。具体实现方法如下:
/* * Function : Button按钮响应 * Param : v按钮对象 * Author : 博客园-依旧淡然 */ public void onClick(View v) { switch (v.getId()) { case R.id.buttonChangeDate: MyDatePickerDialog myDatePickerDialog = new MyDatePickerDialog(); DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, myDatePickerDialog, mDatePicker.getYear(), mDatePicker.getMonth(), mDatePicker.getDayOfMonth()); datePickerDialog.show(); //显示日期设置对话框 break; case R.id.buttonChangeTime: MyTimePickerDialog myTimePickerDialog = new MyTimePickerDialog(); TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, myTimePickerDialog, mTimePicker.getCurrentHour(), mTimePicker.getCurrentMinute(), true); timePickerDialog.show(); //显示时间设置对话框 break; } } /* * Function : 自定义MyDatePickerDialog类,用于实现DatePickerDialog.OnDateSetListener接口, * 当点击日期设置对话框中的“设置”按钮时触发该接口方法 * Author : 博客园-依旧淡然 */ public class MyDatePickerDialog implements DatePickerDialog.OnDateSetListener { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mDatePicker.updateDate(year, monthOfYear, dayOfMonth); //更新日期值 } } /* * Function : 自定义MyTimePickerDialog类,用于实现TimePickerDialog.OnTimeSetListener接口, * 当点击时间设置对话框中的“设置”按钮时触发该接口方法 * Author : 博客园-依旧淡然 */ public class MyTimePickerDialog implements TimePickerDialog.OnTimeSetListener { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mTimePicker.setCurrentHour(hourOfDay); //设置TimePicker的小时值 mTimePicker.setCurrentMinute(minute); //设置TimePicker的分钟值 } }