DatePicker&TimePicker

简介

摘自 sanatesi

  1. DatePicker和TimePicker两种实现动态输入日期和时间的功能。
  2. DatePickerDialog和TimePickerDialog两种实现动态输入日期和时间的对话框
  3. 两组针对监测日期时间改变的监听器包含:
    (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();使之弹出对话框显示在屏幕上。