一.src文件分析:
与calendar相关的包和类
Calendar模块根据包的划分,可以将Calendar初步归类为:
四个视图组:月视图、周视图、日视图、日程视图;
核心业务组:添加日程、设置日程提醒、日历同步;
在calendar包下的上层代码中有DayFragment.java、DayView.java这两个与日视图相关的类;
在/month包下是月视图模块;
在/agenda包下是日程视图模块;
在/event包下是日程的编辑、显示模块;
在/alert包下是日程提示模块;
在/selectcalendars包下是与日历同步相关的视图与操作模块;
在/widget包下,顾名思义是桌面小部件模块。、
在/lunar包下,日历阴历显示
二.启动流程
I、概述:
1. AllInOneActivity.java //入口类,初始化日历数据与界面
2. AsyncQueryService //为ContentProvide提供增删改查功能的支持
3. CalendarController.java //控制中心,沟通AllInOneActivity和各个模块
4. CalendarViewAdapter.java //适配左上角的下拉导航菜单
5. CalendarSettingsActivity.java //ActionBar的Setting按钮
6. EditEvent.java //新建日程活动,设置活动名称,时间,地点,提醒闹铃等。
7. EventInfoActivity.java //查看活动详情,可以编辑更新活动内容。
8. SelectCalendarsActivity.java //日历本地日历是否同步和显示。
9. CalendarPreferenceActivity.java //日历设置,日历视图设置,提醒设置,关于等功能。
10. AlertActivity.java //日历通知,提示日历活动是否延迟或关闭活动提醒。
11. AlertService.java //闹铃提醒服务。
12. DismissAllAlarmsService.java //解雇所有警报服务。
13. SearchActivity.java //查询日程活动(2.3.0版本没有此功能);
14. LunarCalendar.java //阴历
15. DayUtils.java //将日期转换成各种不同的显示样式
16. DayFragment.java //显示日视图
17. DayOfMonthDrawable.java //点击“今天”之后重绘的the day of the month
18. DayView.java //对日视图的重绘及其有关的信息处理
19. EventInfoActivity.java //显示详细的事件信息
20. EventInfoFragment.java //详细事件的视图
21. GeneralPreferences.java //保存了日历应用的默认配置
22. QuickResponseSettings.java //设置要发送日历给Email时的快速响应
23. SearchActivity.java //“搜索”按钮的响应
24. Utils.java //各种辅助工具
25. ./month下:
26. MonthByWeekFragment.java //显示月视图
27. MonthWeekEventsView.java //显示月视图中的Event
28. SimpleDayPickerFragment.java//动态绘制一个可选Days的Title list of Week
29. SimpleWeekView.java //动态绘制单独的一周的视图
30. ./agenda下:
31. AgendaFragment.java //日程详细视图
32. AgendaListView.java //日程列表模块
33. ./event下:
34. EditEventActivity.java //用来详细编译一个事件
35. EditEventFragment.java //显示编辑事件的视图
36. ./alerts下:
37. AlertActivity.java //提醒类事件
38. AlertService.java //后台运行的提醒类服务
39. QuickResponseActivity.java //用户从notifications向外发送邮件时呈现一个账户List
40. ./selectcalendars下:
41. electCalendarsSyncFragment.java//选择同步日历的视图
42. SelectSyncedCalendarsMultiAccountActivity.java//多账户同步设置业务
43. SelectVisibleCalendarsActivity.java//选择可见账户日历业务
44. SelectVisibleCalendarsFragment.java//可见日历视图
45. ./widget下:
46. CalendarAppWidgetService.java//Calendar对桌面小部件提供的远程沟通服务
47. CalendarAppWidgetPro