Material Calendar View 是一个非常好用的Android日历库,可以覆盖我们我们大部分的日历相关的个性化开发需求;它同时也是一个非常适合学习的优秀项目,源码中应用了许多Android开发者进阶第一步所必须掌握的基础知识和设计模式。这几篇博客就是对这些知识的总结和记录。
一、功能一览
丰富的可定制项:
(1) 按月显示、按周显示
(2) 周几是第一天
(3) 日历的宽度
(4) 日期的宽度和高度
(5) 日历的字体大小和颜色
(6) 日期的背景图片
(7) 是否显示非本月日期
(8) 日期的选中字体颜色
(9) 日期的选中背景图片事件监听:
(1) 选中日期
(2) 当前显示月份改变
二、基本视图
MaterialCalendarView
是日历的视图类,我们在布局文件中使用的就是它。
MaterialCalendarView
是一个容器,直接继承自ViewGroup,由两部分组成:
顶部。顶部是一个LinearLayout,其余部分是一个ViewPager。
顶部布局比较简单,就是由左右两个ImageView
和中间的TextView
组成。日历部分。日历一般都可以左右滑动的,所以不用多想,肯定是
ViewPager
。日期视图的创建主要是在ViewPager
的PagerAdapter
中。
MaterialCalendarView
提供两种日历显示模式,一种是“月历”模式,另一种是“周历”模式。作者分别使用了MonthPagerAdapter
和WeekPagerAdapter
来实现这两种不同的视图,可以在布局文件中使用app:mcv_calendarMode
来指定:
<com.prolificinteractive.materialcalendarview.MaterialCalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:mcv_calendarMode="month"/>
当然也支持在程序中动态的去改变:
// mcv是MaterialCalendarView的实例
mcv.setDisplayMode(CalendarMode.WEEK)
三、小结
这一小节比较短,只简要的介绍了一下 Material Calendar View 是个什么项目,大概有哪些功能,视图的基本构成是什么样的。详细的使用方法大家可以去看Github中的文档,说的非常详细。
下一节想要记录的是日历以及月历界面的界面是怎么绘制出来的。
【后记】
第一次系统的记录自己学习一个开源项目的过程和知识,不知从何写起、怎么编排、要写多细,排版更是非常糟糕。如果有幸被开发者阅读并发现写的不对的、没讲清楚的或者想要更进一步了解交流的,请留言多多指教。