DatePicker&TimePicker
简介
摘自 sanatesi
- DatePicker和TimePicker两种实现动态输入日期和时间的功能。
- DatePickerDialog和TimePickerDialog两种实现动态输入日期和时间的对话框
- 两组针对监测日期时间改变的监听器包含:
(1) OnDateChangedListener和OnTimeChangedListener():
当用户更改了DatePicker里的年月日时,将触发OnDateChangedListener监听器的onDateChanged()事件,当用户更改了TimePicker里的时分时,将触发OnTimeChangedListener监听器的onTimeChanged()事件
(2)OnDateSetListener和OnTimeSetListener():
当用户更改了DatePickerDialog里的年月日时,将触发OnDateSetListener监听器的onDateSet()事件,当用户更改了TimePickerDialog里的时分时,将触发OnTimeSetListener监听器的onTimeSet()事件
DatePicker
摘自 不回首
1.month在机器中运行时是从0开始的,在sdk方法中使用一律采用不加1的方式,只有当用于显示时才手动加1;
2.获取日期实例并初始化并打印: Calendar cal=Calendar.getInstance();
3.获取当前日期及时间:
int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH)+1;
int day=cal.get(Calendar.DAY_OF_MONTH);
int hour=cal.get(Calendar.HOUR_OF_DAY);
int minute=cal.get(Calendar.MINUTE_OF_HOUR);
setTitle(year+"-"+month+"-"+day+"-"+hour+":"+minute);
4.使标题上的日期能随着选择的改变而改变
datePicker.init(year,month,day,new OnDateChangedListener()){
@Override
public void onDateChanged(DatePicker view,int year,int cal.get(Calendar.MONTH_OF_YEAR),int dayOfMonth){
setTitle(year+"-"+(monthOfYear+1)+"-"+dayOfMonth);
}
}
TimePicker
摘自 ZeroLegend
声明并获取id
TimePicker timePicker=(TimePicker)findViewById(R.id.timePicker1);
//时间选择器不需要手动初始化,默认初始化为当前的时间
timePicker.setOnTimeChangedListener(new OnTimeChangedListener()){
@Override
public void onTimeChanged(TimePicker view,int hourOfDay,int minute){
setTitle(hourOfDay+"-"+minute);
}
}
摘自 霜花似雪 夏蝉的夏天
DatePickerDialog
DatePickerDialog对话框形式显示日期,用onDateSet设置参数
第一个参数:上下文,就是本类,使用this。
第二个参数:设置监听器。
第三个参数:对话框的初始年份。
第四个参数:对话框的初始月份。
第五个参数:对话框的初始天数。
实现方法:
使用OnDateSetListener
接口的onDateSet
监听器调整了year,monthOfYear,dayOfMonth
new DatePickerDialog(this, new OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
setTitle(year+"-"+(monthOfYear+1)+"-"+dayOfMonth+" "+hour+"-"+minute);
}
}, year, calendar.get(Calendar.MONTH), day).show();
TimePickerDialog
对话框形式选择时间
TimePickerDialog()的几个参数:
第一个参数:上下文,就是本类,使用this。
第二个参数:设置监听器。
第三个参数:对话框的初始时间——小时部分。
第四个参数:对话框的初始时间——分钟部分。
第五个参数:决定是否采用24小时制,这里选择ture。
摘自其他:
TimePickerDialog和TimePicker不同的是,它不用在布局文件中声明,直接通过类就可以new出来。在Android中这种弹出式的UI一般都不用在布局文件中声明,直接用类就可以搞定,一般要显示他们都要显示地调用show()方法,比如Toast这个类也是一样。
实现方法:
使用OnTimeSetListener
接口的onTimeSetListener
监听器设置了hour,minute
new TimePickerDialog(this, new OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
setTitle(year+"-"+month+"-"+day+" "+hourOfDay+"-"+minute);
}
}, day, minute, true).show();
注意:
show()只是让对话框show出来。
摘自 Ephraim
其实time or datepickerdialog也不一定就直接显示在屏幕上
可以timedatepickerdialog tpd = new timedatepickerdialog(…,…,..)
在需要的时候(比如点击某个button)让tpd.show();使之弹出对话框显示在屏幕上。