Android 日历单选、区域选择

CalendarView

自定义日历
1.单选
2.时间段选择

预览

1.单选效果
Android 日历单选、区域选择_第1张图片
2.时段效果 - intervalShape=“circle”

Android 日历单选、区域选择_第2张图片
3.时段效果 - (注意:2022.3.30.1版本以前不支持) - intervalShape=“rect”

Android 日历单选、区域选择_第3张图片
4.今日效果 - todayText=“今”
Android 日历单选、区域选择_第4张图片

Fix 2022.8.30.1

新增选中区间图形属性;
新增水平滑动切换上下月;
新增垂直滑动切换上下月;
新增移动距离促发条件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

Maven

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'
}

xml


attr.xml





































    
    
    
    



    
    
    
    

设置月份是否可滑动

CalendarView calendar = findViewById(R.id.calendar);
calendar.setMonthScrollable(true);

设置item是否可点击

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) -> {

});

你可能感兴趣的:(Android,Widget,Android,日历,Android区间日历,Android日历选择)