定制Android日历,只有一个View,非常小巧
那么多轮子都没有满足需求的,只能自己造。
自定义Android日历,只有一个CalendarView,非常小巧。核心代码400行左右,主要就是画。
CSDN: https://blog.csdn.net/lylddingHFFW/article/details/88227283
GitHub: https://github.com/lyldding/CalendarView
功能:支持左右滑动切换月份,上下滑动切换年份,设置背景,边框,周末或周一为第一天,显示其他月份日期等功能。 具体参考Api或者自定义。
/*** 显示选中日期*/private boolean isShowSelectDate = true;private int selectBackgroundColor = 0xff1157cb;private int selectTextColor = Color.RED;/*** 显示当前日期*/private boolean isShowCurrentDate = true;private int currentBackgroundColor = 0xff1157cb;private int currentTextColor = Color.RED;/*** 显示边框*/private boolean isShowBorder = false;private int borderColor = Color.GRAY;/*** 切换上下月按钮时滑动*/private boolean isBtnSwitchMonthScroll = true;/*** 显示其他月份日期*/private boolean isContainOtherMonthDate = true;private int otherMonthTextColor = Color.LTGRAY;/*** 周日为第一天,false 周一为第一天*/private boolean isSundayAtFirst = true;/*** 当前月日期颜色*/private int currentMonthDayTextColor = Color.BLACK;/*** 年月标题的字体size dp*/private int titleTextSize = 15;/*** 整体星期标题的背景色*/private int weekBackgroundColor = 0xff88baff;/*** dp*/private int weekTextSize = 9;/*** 整体日历的背景色*/private int background = Color.WHITE;/*** 整体日历的背景圆角dp*/private int backgroundRadius = 3;/*** dp*/private int dayTextSize = 12;
大致思路:(主要分为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;
}
定制Android日历,只有一个View,非常小巧相关推荐
- android sqlite自定义函数,Android中自定义一个View的方法详解
本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到 ...
- android动画view上移,在Android开发中使用View制作一个引导动画
在Android开发中使用View制作一个引导动画 发布时间:2020-11-20 16:46:16 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关在Android开发中使用V ...
- [Android]如何做一个崩溃率少于千分之三噶应用app(15)-View分发module架构
以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章. [Android]如何做一个崩溃率少于千分之三噶应用app--章节列表 这个系列的有关架构的概念,适合有大概 三年以上A ...
- android 日历_适用于Android的十大最佳日历应用
android 日历 Looking for the best calendar apps for Android? You're in the right place! Let's get righ ...
- Android开发自定义的View
2019独角兽企业重金招聘Python工程师标准>>> 当开发者打算派生自己的UI组件时,首先定义一个继承View基类的子类,然后重写View类的一个或多个方法,通常可以被用户重写的 ...
- 日历控件的android代码,Android日历控件PickTime代码实例
Android日历控件PickTime代码实例 发布时间:2020-10-03 16:05:51 来源:脚本之家 阅读:86 作者:手撕高达的村长 最近做项目,需要设置用户的生日,所以做这样一个功能. ...
- Android日历视图
In this tutorial, we'll be discussing the Calendar Widget using the CalendarView class in our Androi ...
- 【转】高手速成android开源项目【View篇】
主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其他如Dialo ...
- 高手速成android开源项目【View篇】(转)
主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其他如Dialo ...
最新文章
- Reids报错解决:Job for redis-server.service failed because the control process exited with error code.
- pdf转换为html5,PDF转换为HTML5的四种方式
- 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法
- easyui复杂表单_EasyUI中实现form表单提交的示例分享
- Linux 性能监测:Memory
- opencv 叠加两张图_「干货」教你如何用OpenCV快速寻找图像差异处
- wifi rssi 计算 距离_PPT|交通未来第3期 基于实时WIFI蓝牙检测数据的交通目标定位及出行模式甄别技术...
- android 解决Date.gettimezoneoffset已经废弃
- SpringAOP xml 方式和注解简单实现日志处理
- 学工在线新闻搜索引擎0.1 beta版
- Java基础——注解的初步认识
- VScode同步配置和插件步骤
- Spring Boot与Docker(一):微服务架构和容器化概述
- html图片滚动暂停,怎么设置鼠标悬停时滚动的图片或文字停止?
- Proteus仿真:行列式键盘
- InfoPath 2007表单应用
- 【Python】解决使用 plt.savefig 保存图片时一片空白
- 基因数据处理8之BWA_MEM小数据集处理(成功)
- 基于神经网络的图像去水印/图像修复实践
- Hadoop垃圾回收站与YARN日志聚合