一、OnDateChangedListener和OnTimeChangedListener()
1、当用户更改了DatePicker里的年、月、日时,将触发OnDateChangedListener监听器的onDateChange()事件
2、当用户更改了TimePicker里的时、分时,将触发OnTimeChangedListener监听器的onTimeChanged事件
二、OnDateSetListener()和OnTimeSetListener()
1、当用户更改了DatePickerDialog里的年、月、日时,将触发OnDateSet-Listener监听器的onDateSet()事件
2、当用户更改了TimePicker里的时、分时,将触发OnTimeSetListener监听器的onTimeSet()事件
三、使用DatePicker实现日历选择器
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private TimePicker timePicker;
private DatePicker datePicker;
private Calendar cal;
private int year;
private int month;
private int day;
private int hour;
private int minute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取日历的对象
cal = Calendar.getInstance();
//获取年月日时分秒的信息
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH)+1;
day = cal.get(Calendar.DAY_OF_MONTH);
hour = cal.get(Calendar.HOUR_OF_DAY);
minute = cal.get(Calendar.MINUTE);
setTitle(year + "-" + month + "-" + day + "-" + hour + ":" + minute);
datePicker = (DatePicker) findViewById(R.id.datePicker);
timePicker = (TimePicker) findViewById(R.id.timePicker);
//datePicker初始化,第四个参数对应dataPicker的事件监听器,获取到当前选择的日期的结果
datePicker.init(year, cal.get(Calendar.MONTH), day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {
setTitle(i + "-" + (i1+1) + "-" + i2 );
}
});
}
}
四、使用TimePicker实现时间选择器
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker timePicker, int i, int i1) {
setTitle(i + ":" + i1 );
}
五、使用DatePickerDialog实现日期选择对话框
// DatePickerDialog(上下文,事件监听器)
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
setTitle(i + "-" + (i1 + 1) + "-" + i2);
}
},year,cal.get(Calendar.MONTH),day).show();
六、使用TimePickerDialog实现时间选择对话框
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int i, int i1) {
setTitle(i + ":" + i1);
}
},hour,minute,true).show();
七、注意事项
1、DataPicker对象以init()这个方法来指定DatePicker初始的年、月、日及OnDateChangeListener()的事件;而TimePicker对象则是直接以setOnTimeChangedListener()事件来处理时间改变时程序要做的操作。
2、DatePickerDialog与TimePickerDialog与前面这两种类型的对象最大的区别在于DatePicker与TimePickerDialog对象则是以弹出Dialog的方式来显示