使用时间选择器总比一个个的手动输入时间的用户体验好,实际中的应用也挺多的。
先看看张什么样吧:
以上两种是以对话框的方式显示的,看着也比较舒服,还有一种是直接粘贴在界面上的(图略了哈)
接下来分别介绍:
public class MainActivity extends AppCompatActivity {
private DatePicker mDatePicker;
private TimePicker mTimePicker;
private TextView mShowTime;
private Calendar calendar;
private int year;
private int month;
private int day;
private int hours;
private int min;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取时间对象
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
//月份是从0开始的所以要+1,才能正确显示
month = calendar.get(Calendar.MONTH) + 1;
day = calendar.get(Calendar.DAY_OF_MONTH);
hours = calendar.get(Calendar.HOUR_OF_DAY);
min = calendar.get(Calendar.MINUTE);
mShowTime = (TextView) findViewById(R.id.showtime);
mShowTime.setText("当前时间为" + year + "-" + month + "-" + day + " " + hours + ":" + min );
mDatePicker = (DatePicker) findViewById(R.id.datepicker);
//使用init方法初始化日历上的日期,做了相应的处理,所以此处不用+1
mDatePicker.init(year, calendar.get(Calendar.MONTH), day, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int year, int monthOfYear, int daysOfMonth) {
//监听日历的变化,月份仍是从0开始,所以还要+1
mShowTime.setText(year + "-" + (monthOfYear + 1) + "-" + daysOfMonth);
}
});
mTimePicker = (TimePicker) findViewById(R.id.timepicker);
mTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker timePicker, int i, int i1) {
mShowTime.setText(i + ":" + i1);
}
});
}
/**
* 日历以对话框的形式弹出
* @param view
*/
public void dateDialogClick(View view) {
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int daysOfMonth) {
//记得获取的月份要+1
mShowTime.setText(year + "-" + monthOfYear + "-" + daysOfMonth);
}
}, year, month-1, day).show();//此处的参数是设置在日历上的初始时间,不要做+1处理,一定不要忘了show哈,否则没有效果的
}
/**
* 时间以对话框的形式弹出
* @param view
*/
public void timeDialogClick(View view) {
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hours, int min) {
mShowTime.setText(hours + ":" + min);
}
}, hours, min, true).show();
}
}
注意月份的+1 问题,就没有什么难点了