一、概述
MaterialCalendarView是一个开源项目。功能强大支持多选、单选、标注等。
二、问题
1、其继承自ViewGroup,故与CalendarView半毛钱关系都没有,完全是一个新的类
2、其子类CalendarDay是经过调整的
1 2 3 4
| CalendarDay date = new CalendarDay(); ...... Log.e(LOG_TAG, "Date选中日期:" + date.getDate().getYear() + "-" + date.getDate().getMonth() + "-" + date.getDate().getDay()); Log.e(LOG_TAG, "Calendar选中日期:" + date.getCalendar().get(Calendar.YEAR) + "-" + (date.getCalendar().get(Calendar.MONTH) + 1) + "-" + date.getCalendar().get(Calendar.DAY_OF_MONTH));
|
得到的结果为
1 2
| Date选中日期:116-3-6 Calendar选中日期:2016-4-30
|
即:
1 2 3
| CalendarDay.getDate().getYear()得到的年份 = 真实年份 - 1900 CalendarDay.getDate().getMonth()得到的月份 = 真实年份 - 1 CalendarDay.getDate().getDay()得到的日 = 星期数 - 1
|
3、关于DayViewDecorator类
此类为抽象类,定义如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| /** * Decorate Day views with drawables and text manipulation */ public interface DayViewDecorator { /** * Determine if a specific day should be decorated * * @param day {@linkplain CalendarDay} to possibly decorate * @return true if this decorator should be applied to the provided day */ boolean shouldDecorate(CalendarDay day); /** * Set decoration options onto a facade to be applied to all relevant days * * @param view View to decorate */ void decorate(DayViewFacade view); }
|
实际使用时,只需实现上述两个方法即可,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class EventDecorator implements DayViewDecorator { private final int color; private final HashSet<CalendarDay> dates; public EventDecorator(int color, Collection<CalendarDay> dates) { this.color = color; this.dates = new HashSet<>(dates); } @Override public boolean shouldDecorate(CalendarDay day) { return dates.contains(day); } @Override public void decorate(DayViewFacade view) { view.addSpan(new DotSpan(5, color)); } }
|