Android之日历源码浅析

本文详细分析了Android日历应用的源码,包括日历主界面、新建活动界面、设置界面和删除事件界面的实现。重点讨论了Time类的使用、视图切换的实现、事件同步的方法以及视图的绘制过程,如月视图和日程视图的绘制细节。此外,还介绍了事件提醒功能的工作流程和日程视图的数据加载。
摘要由CSDN通过智能技术生成

前言:本文在整理过程中由于水平有限,若有不当之处,请指正!

1 常见界面及布局的实现

1.1 日历主界面:

 日历主界面是由AllInOneActivity实现,对应四种视图类型动态加载相应的Fragment实现。各视图如下:

(1) 日视图:在AllInOneActivity上加载了DayFragmentDayFragment的布局采用了自定义布局DayView,而填充该布局文件时用到了ViewSwitcherViewSwitch是一个视图切换组件,可以把多个视图重叠在一起,而每次只显示一个视图,而给ViewSwitch而创建要显示的View时,有两种方式:既可以在xml文件中添加,也可以通过实现ViewFactory,重写makeView()添加。源码中采用第二种方式,如下:

DayFragmentxml布局:


Java代码:

 

日视图效果如下:

 

(2) 周视图:也是加载了DayFragment,效果如下:


 

(3) 月视图:在AllInOneActivity上加载了MonthByWeekFragmentMonthByWeekFragment的布局是一个自定义的MonthListView,而MonthByWeekFragment继承了SimpleDayPickerFragment,这类继承了ListFragmentListFragment是一个自身带有一个ListViewFragment,在SimpleDayPickerFragment中,通过适配器SimpleWeeksAdapter给对应的ListView添加数据,这些数据包括周数、是否显示周数、每周的起始日、高亮显示的日期。效果如下:


(4) 日程视图:在AllInOneActivity上加载了AgendaFragmentAgendaFragment的布局文件也是使用了自定义的ListView:AgendaListView,并通过适配器AdendaWindoeAdapter加载日程数据。效果如下:


1.2 新建活动界面

 EditEventActivity上动态加载了EditEventFragment,并将EditEventFragment的视图对象传给了EditEventView,所有的控件的实例化和事件处理都在自定义的EditEventView中完成。界面如下:


1.3 设置界面

设置界面的ActivityCalendarSettingsActivity继承了PreferenceActivity,在CalendarSettingsActivity中又加载了GeneralPreferencesAboutPreferences两个PreferenceFragment。在PreferenceActivity中使用“Header+ Fragment”的模式,实现首选项设置,在当前Activity中展示一个或者多个首选项的标题,每个标题对应一个相应的PreferenceFragment,使用PreferenceActivity时,需要重写onBuildHeaders(List<Fragment> target)方法填充标题对应的PreferenceFragment。如源码中:

CalendarSettingsActivityxml布局文件:


Java

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值