自定义日历
1.单选
2.时间段选择
1.单选效果
2.时段效果 - intervalShape=“circle”
3.时段效果 - (注意:2022.3.30.1版本以前不支持) - intervalShape=“rect”
新增选中区间图形属性;
新增水平滑动切换上下月;
新增垂直滑动切换上下月;
新增移动距离促发条件absMove属性;
新增月份滑动方式monthMode属性;
新增日历月份滑动监听OnCalendarChangeListener;
新增日历滑动监听OnCalendarScrollChangeListener;
删除attr.xml中absMove属性;
优化垂直水平滑动算法;
新增禁用时间max参数setDisableMinTime();
新增禁用时段min参数setDisableMinTime();
修改item点击事件名称;
单选监听月份bug修复;
设置年份、月份、自动促发onCalendarChange监听事件;
新增设置月份是否可滑动方法;
新增设置item是否可点击方法;
新增设置禁用区间数组;
新增todayText属性设置当前日期文字;
新增nextMonth()和lastMonth()方法;
修复月份31日bug;
名字 | 资源 |
---|---|
AAR | calendar_view.aar |
GitHub | CalendarView |
Gitee | CalendarView |
1.build.grade | setting.grade
repositories {
...
maven { url 'https://jitpack.io' }
}
2./app/build.grade
dependencies {
implementation 'com.github.RelinRan:CalendarView:2022.8.30.1'
}
CalendarView calendar = findViewById(R.id.calendar);
calendar.setMonthScrollable(true);
CalendarView calendar = findViewById(R.id.calendar);
calendar.setItemClickable(true);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
CalendarView calendar = findViewById(R.id.calendar);
//设置当前时间
calendar.setDate(new Date());
//单选
calendar.setInterval(false);
//选中日期
calendar.setCheckTime("2022-06-20");
//设置可选区间
calendar.setMinTime("2022-06-01");
calendar.setMaxTime("2022-07-20");
//选中监听
calendar.setOnItemSelectListener((calendarView, time) -> {
String date = dateFormat.format(time);
});
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
CalendarView calendar = findViewById(R.id.calendar);
//设置当前时间
calendar.setDate(new Date())
//时段选择
calendar.setInterval(true);
//设置选中区间
calendar.setIntervalStart("2022-06-20");
calendar.setIntervalEnd("2022-07-05");
//设置可选区间(注意可用和禁用只能设置一种)
calendar.setMinTime("2022-06-01");
calendar.setMaxTime("2022-07-20");
//设置禁用区间(注意可用和禁用只能设置一种)
calendar.setDisableMinTime("2022-05-01");
calendar.setDisableMaxTime("2022-05-20");
//设置禁用区间数组最小(注意可用和禁用只能设置一种)
calendar.setDisableMinTimes(new String[]{"2022-05-01","2022-05-10","2022-05-22"});
//设置禁用区间数组最大(注意可用和禁用只能设置一种)
calendar.setDisableMaxTimes(new String[]{"2022-05-20","2022-08-15","2022-05-26"});
//切换下一个月
calendar.nextMonth();
//切换上一个月
calendar.lastMonth();
//选择监听
calendar.setOnIntervalSelectListener((view, start, end) -> {
String startTime = dateFormat.format(start);
String endTime = dateFormat.format(end);
});
CalendarView calendar = findViewById(R.id.calendar);
//日期改变监听
calendar_view.setOnCalendarChangeListener((calendarView, date) -> {
String text = new SimpleDateFormat("yyyy-MM-dd").format(date);
});
CalendarView calendar = findViewById(R.id.calendar);
//滑动监听监听
calendar_view.setOnCalendarScrollChangeListener((view, scrollX, scrollY, oldScrollX, oldScrollY) -> {
});