calendar
一个垂直方向的日历选择控件,用于酒店APP入住时间选择。(Kotlin)
开源地址:https://github.com/sange93/calendar/
下载DEMO 体检效果
使用说明
1、引入
- 方式一:gradle 引入(推荐)
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation 'com.github.sange93:calendar:Tag'
}
- 方式二:导入aar包到项目lib下
下载 aar
2、两种功能应用场景
- 场景一:连续的日期选择
示例代码 SuccessiveTimeActivity.kt
/**
* 初始化日历
*/
private fun initCalendar() {
vCalendar.initViews(CalendarAdapter(this))// 设置为连选的适配器
// 区间选取完成监听
vCalendar.setOnCalendarChooseListener(object :
CalendarAdapter.OnCalendarRangeChooseListener {
override fun onRangeDate(startDate: Int, endDate: Int) {
onChooseDate(startDate, endDate)
}
})
val startDate = if (mStartDate.isNotEmpty()) mSdf.parse(mStartDate) else null
val endDate = if (mEndDate.isNotEmpty()) mSdf.parse(mEndDate) else null
if (startDate != null && endDate != null) {
mDayCount = TimeUtil.getTimeDistance(startDate, endDate)
}
// 自定义设置相关
vCalendar.setConfig(
CalendarVerticalConfig.Builder()
.setShowWeek(true) //是否显示星期栏
.setShowLunar(false) //是否显示阴历
.setColorWeek("#333333") //星期栏的颜色
.setTitleFormat("yyyy.MM") //每个月的标题样式
.setColorTitle("#000000") //每个月标题的颜色
.setColorSolar("#333333") //阳历的颜色
.setColorLunar("#00ff00") //阴历的颜色
.setColorBeforeToday("#CCCCCC") //今天之前的日期的颜色
.setColorRangeBg("#FF5A00") //区间中间的背景颜色 99FF5A00
.setColorRangeText("#FFFFFF") //区间文字的颜色
.setColorStartAndEndBg("#FF5A00") //开始结束的背景颜色
.setCountMonth(3) //显示多少月(默认6个月)
.setStartDate(stringToInt(mStartDate)) // 默认开始日期
.setEndDate(stringToInt(mEndDate)) // 默认结束日期
.build()
)
// 事件日期集合
val mEventDates = arrayListOf<CalendarEventModel>()
//设置日历相关事件
for (banDate in mBanDateList) {
val eventModel = CalendarEventModel()
eventModel.eventDate = banDate.toInt()
eventModel.eventInfo = "休"
eventModel.eventBgColor = Color.parseColor("#CCCCCC")
eventModel.eventTextColor = Color.parseColor("#FF0000")
mEventDates.add(eventModel)
}
//设置事件
vCalendar.setEventDates(mEventDates)
// 设置日历是否可点击,默认true
vCalendar.setDateClickable(mClickable)
}
- 场景二:非连续的日期选择
示例代码 DiscontinuousTimeActivity.kt
/**
* 初始化日历
*/
private fun initCalendar() {
vCalendar.initViews(CalendarMultipleAdapter(this))// 设置多选适配器
vCalendar.setOnCalendarChooseListener(object :
CalendarMultipleAdapter.OnCalendarMultipleChooseListener {
override fun onClickDate(date: Int) {
onClickDate(date.toString())
}
})
val banDateList = arrayListOf<Int>()
for (banDate in mBanDateList) {
banDateList.add(banDate.toInt())
}
// 自定义设置相关
vCalendar.setConfig(
CalendarVerticalConfig.Builder()
.setShowWeek(true) //是否显示星期栏
.setShowLunar(false) //是否显示阴历
.setColorWeek("#333333") //星期栏的颜色
.setTitleFormat("yyyy.MM") //每个月的标题样式
.setColorTitle("#000000") //每个月标题的颜色
.setColorSolar("#333333") //阳历的颜色
.setColorLunar("#00ff00") //阴历的颜色
.setColorBeforeToday("#CCCCCC") //今天之前的日期的颜色
.setColorRangeBg("#FF5A00") //区间中间的背景颜色 99FF5A00
.setColorRangeText("#FFFFFF") //区间文字的颜色
.setColorStartAndEndBg("#FF5A00") //开始结束的背景颜色
.setCountMonth(3) //显示多少月(默认6个月)
.setSelectedDateList(banDateList)// 默认选中日期
.build()
)
// 设置日历是否可点击,默认true
vCalendar.setDateClickable(true)
}