赞
踩
CalendarView
自定义Android日历,只有一个CalendarView,非常小巧。核心代码400行左右,主要就是画。
功能:支持左右滑动切换月份,上下滑动切换年份,设置背景,边框,周末或周一为第一天,显示其他月份日期等功能。 具体参考CalendarConfig或者自定义。
dependencies {
implementation 'com.github.lyldding:CalendarView:TAG'
}
大致思路:(主要分为5个区域)
1,初始化时计算每个区域每个Item的具体位置,并缓存。
2,红色年月为显示区域,在更新时同步更新其他四个区域的日期,并缓存。
3,处理移动和绘制。
代码简述:(具体看源码吧,核心代码400行左右)
1,计算各个Item的具体位置,并更新月份信息
private void computeData() {
mViewRectF.set(0 + mStrokeWidth / 2f, 0 + mStrokeWidth / 2f, mViewWidth - mStrokeWidth / 2f, mViewHeight - mStrokeWidth / 2f);
mViewWidth = (int) mViewRectF.width();
mItemWidth = mViewWidth / CalendarUtils.WEEK_COLUMN;
computeTitleData();
computeWeekData();
computeDayData();
updateMonthData(mCurrentYear, mCurrentMonth, Type.NONE);
}
2,绘制各个部分:背景,年月和切换按钮,星期,日期。
protected void onDraw(Canvas canvas) {
mIsDrawing = true;
drawBackground(canvas);
drawDataStr(canvas);
drawSwitchButton(canvas);
drawWeek(canvas);
drawAllDay(canvas);
drawOuterLine(canvas);
mIsDrawing = false;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。