时间选择器在Android开发中很常见,比如设置闹钟、在批量查询中时间段的选择都会用到设计选择器,最近在项目中就遇到一个多项条件查询功能,在时间段的选择上需要时间选择器,项目时间的问题不可能自己撸了,所以就在网上找了一些,GitHib关于时间选择器的框架有很多,最后选择了一个叫PickerView(https://github.com/Bigkoo/Android-PickerView)
的多项选择框架,此框架在GitHub上得到了10.9k的Star,可见此框架的强大功能,时间选择器只是PickerView的其中一个功能,该框架的优势是给开发者高度的自由性,弹框的位置、选项的数量、按钮的文字,甚至字体的颜色也可以定制,简直不要太方便。
使用方法:先添加框架依赖
//PickerView框架 当前版本4.1.9
implementation 'com.contrarywind:Android-PickerView:4.1.9'
创建时间选择器方法,可根据需要创建一个开始时间和结束时间方法,方法创建方式是一样的
//获取当前时间
Calendar selectedDate = Calendar.getInstance();
Calendar startDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
startDate.set(2013,0,1);//根据需要设计开始时间
startTimePicker = new TimePickerBuilder(mContext, (date, v) -> {//选中事件回调
startTimeLong = date.getTime();
startTime = DateFormatUtils.getFormatDate(date);
mEtStartTime.setText(startTime);
})
.setType(new boolean[]{true, true, true, true, true, true})// 默认全部显示
.setCancelText("取消")//取消按钮文字
.setSubmitText("确定")//确认按钮文字
//.setContentSize(18)//滚轮文字大小
.setTitleSize(20)//标题文字大小
.setTitleText("时间选择")//标题文字
.setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示
.isCyclic(true)//是否循环滚动
.setTitleColor(Color.BLACK)//标题文字颜色
.setSubmitColor(Color.BLACK)//确定按钮文字颜色
.setCancelColor(Color.BLACK)//取消按钮文字颜色
.setTitleBgColor(Color.rgb(255,255,255))//标题背景颜色 Night mode
.setBgColor(Color.rgb(255,255,255))//滚轮背景颜色 Night mode
.setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
.setRangDate(startDate,endDate)//起始终止年月日设定
.setLabel("年","月","日","时","分","秒")//默认设置为年月日时分秒
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
.isDialog(false)//是否显示为对话框样式
.build();
使用:弹出选择框
startTimePicker.show();
使用注意事项:
选择时间的时候一般来说要先设置起始时间再设置结束时间,并且结束时间不得小于起始时间,这些都需要我们自己设置约束,其实很简单,比如在点击结束时间的时候获取起始时间的时间戳值,如果有再判断是否小于所选择的结束时间就ok了。