最近准备开始学习自定义View了,之前项目上也说需要一个日历控件,当时就在网上找了一个,现在想自己做一个自定义控件,基本的实现思路也是在慕课网上面学习的,先上图吧:
布局的组成
目前日历实现了两个功能,第一个就是可以进行前后月份的切换,第二就是点击某一天,返回该天的日期
我们先来看一下是怎么实现的吧,首先说一下布局:
1、头部展示当前日期的那一行是一个LinearLayout控件,里面包含了两个ImageView用于切换月份,还包含了一个TextView显示当前日期
2、中间星期的展示部分是一个LinearLayout控件,里面包含了七个TextView用于显示一周中每一天
3、具体日期的显示部分则是一个GridView
功能代码的实现
显示日历
首先我们要获取当前月的Calendar实例:
接下来我们在方法renderCalendar()中具体的去实现获取当前月的每一天的Date数据,我们看一下整体的代码:
进行前后两个月的切换
向前切换月份
向前切换月份
点击返回选择的时间
点击时间的实现需要借助接口回调,首先我们要在RuiCalendar这个类中自定义一个接口OnItemClickListener并且声明
接下来我们要利用实现GridView的Item点击事件去监听我们自定义的接口
这样我们的接口回调就已经写好了,剩下来要做的就是要去MainActivity中调用这个接口
使用手册
该项目已经在github上面发布了,如果要调用的话需要在项目中添加下面几句代码
project gradle.build中添加
app gradle.build中添加
具体的调用代码如下:
布局文件中
MainActivity中
上述就是整个自定义日历控件的实现过程,功能还是很简单的,以后有时间的话,会在此基础上添加一些更加实用的功能,欢迎大家指正不足之处!