📅  最后修改于: 2023-12-03 15:29:21.519000             🧑  作者: Mango
在Android开发中,时间选择器是一个很常见的功能,而Material Design风格的时间选择器在UI和交互方面都有很好的表现。本文将介绍如何使用Android中的Material Design时间选择器。
Material DateTime Picker是一个由Wdullaer(William)开发的库,它提供了Date Picker、Time Picker、Date & Time Picker三种模式。这个库支持Android 4.0及以上版本。
Material DateTime Picker库可以通过以下方式引入到你的项目中:
dependencies {
implementation 'com.wdullaer:materialdatetimepicker:4.3.0'
}
Date Picker模式可以让用户选择一个日期。
代码实现:
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
(view, year, month, dayOfMonth) -> {
// TODO 选择日期后的逻辑处理
},
Calendar.getInstance().get(Calendar.YEAR),
Calendar.getInstance().get(Calendar.MONTH),
Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
效果:
Time Picker模式可以让用户选择一个时间。
代码实现:
TimePickerDialog timePickerDialog = new TimePickerDialog(this,
(view, hourOfDay, minute) -> {
// TODO 选择时间后的逻辑处理
},
Calendar.getInstance().get(Calendar.HOUR_OF_DAY),
Calendar.getInstance().get(Calendar.MINUTE),
true);
timePickerDialog.show();
效果:
Date & Time Picker模式可以让用户选择一个日期和时间。
代码实现:
Calendar now = Calendar.getInstance();
DatePickerDialog.OnDateSetListener dateSetListener = (view, year, monthOfYear, dayOfMonth) -> {
Calendar selectedDate = Calendar.getInstance();
selectedDate.set(Calendar.YEAR, year);
selectedDate.set(Calendar.MONTH, monthOfYear);
selectedDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
TimePickerDialog.OnTimeSetListener timeSetListener = (view1, hourOfDay, minute) -> {
Calendar selectedTime = Calendar.getInstance();
selectedTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
selectedTime.set(Calendar.MINUTE, minute);
// TODO 选择日期和时间后的逻辑处理
};
TimePickerDialog timePickerDialog = new TimePickerDialog(this, timeSetListener,
now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), true);
timePickerDialog.show();
};
DatePickerDialog datePickerDialog = new DatePickerDialog(this, dateSetListener,
now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
效果:
Material DateTime Picker提供了很多自定义选项,可以通过代码实现来配置。
下文展示了如何自定义一个Date Picker,其他模式也可以类似实现。
代码实现:
Calendar now = Calendar.getInstance();
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
// TODO 选择日期后的逻辑处理
}
},
now.get(Calendar.YEAR),
now.get(Calendar.MONTH),
now.get(Calendar.DAY_OF_MONTH));
datePickerDialog.setMinDate(Calendar.getInstance());
datePickerDialog.setVersion(DatePickerDialog.Version.VERSION_2);
datePickerDialog.setOkColor(ContextCompat.getColor(this, R.color.colorPrimary));
datePickerDialog.setCancelColor(ContextCompat.getColor(this, R.color.colorPrimary));
datePickerDialog.show(getSupportFragmentManager(), "DatePickerDialog");
效果:
Material DateTime Picker库提供了很好的Material Design风格的时间选择器,可以方便开发者实现日期和时间的选择功能。通过加入自定义选项,可以使时间选择器更加符合业务需求。