android日历左右滑动,GitHub - lyldding/CalendarView: 自定义Android日历,只有一个CalendarView,非常小巧。支持左右滑动切换月份,上下滑动切换年份...

这篇博客介绍了一个轻量级的Android日历库,仅用400行核心代码实现了CalendarView,支持滑动切换月份和年份,自定义背景、边框、周首日等功能。通过计算每个区域的Item位置并缓存,优化了绘制和移动处理。依赖方式为'com.github.lyldding:CalendarView:TAG'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CalendarView

自定义Android日历,只有一个CalendarView,非常小巧。核心代码400行左右,主要就是画。

功能:支持左右滑动切换月份,上下滑动切换年份,设置背景,边框,周末或周一为第一天,显示其他月份日期等功能。 具体参考CalendarConfig或者自定义。

dependencies {

implementation 'com.github.lyldding:CalendarView:TAG'

}

e7b16168c27d6d7fe3915aca38788428.gif

大致思路:(主要分为5个区域)

1,初始化时计算每个区域每个Item的具体位置,并缓存。

2,红色年月为显示区域,在更新时同步更新其他四个区域的日期,并缓存。

3,处理移动和绘制。

e3a06db36772d6b21cf4f9637a8e408a.png

代码简述:(具体看源码吧,核心代码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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值