当前位置:操作系统 > 安卓/Android >>

Android 日历开发教程

代码应该是比较简单的,如果下载了源文件,理解起来会比较容易。而且贴出代码,显得太累赘,为此我做了下面这张图,其实就是对第一节那个简图的增加版:
 
 
使用 ViewPager 是因为我在官方教程里看到了这篇文章:Using ViewPager for Screen Slides,里面还提供了例程下载,再结合上图,可以了解整个过程。
 
运行的流程按我的理解如下:
 
MainActivity执行,当屏幕初始化显示时,调用 onCreate() (这里用回调方式,可以避免对象在内存中创建,但未让屏幕显示时被执行画图处理,可以节约系统开支)
onCreate() 中初始化 ViewPager,给出用于页帧管理的对象 CalendarPagerAdapter;设置初始要显示的页码。
ViewPager 针对当前要显示的页码,向 CalendarPagerAdapter 请求包括相邻的两个页的 Fragment,共创建了三个帧对象。如果你用调试去跟踪,你会发现我在上面所说的现象,虽然是创建了三帧对象,但只有一帧的 onCreateView() 方法被调用,因为其它两帧还不需要在屏幕上绘制。
当某一帧要在屏幕上显示时,CalendarPagerFrament 类的 onCreateView() 方法被回调,在 onCreateView() 方法里,CalendarTableCellProvider 类的 getView 方法接着被调用,在循环里反复调用,直到一整个月所有的单元格被创建。
 
关于 Layout 如何被创建:
 
Layout 的 XML 文件,是在代码里被显式加载的,对于 Activity 类,是在 onCreate() 方法中的语句 setContentView(R.layout.activity_main); 来加载,在其它两处,则是使用语句inflater.inflate(R.layout.view_calendar_table, container, false); 来加载。
 
 
关于窗口样式:
 
在 MainActivity 里有一句 requestWindowFeature(Window.FEATURE_NO_TITLE); 而实际上,可以通过设置 Activity 的主题来实现,选择一个 NoActionBar 的主题就可以了。可以打开文件 AndroidManifest.xml,其中的 AboutActivity 被设置为 Dialog 主题风格,显示时就不会有标题栏。BTW,同时,AboutActivity 也不需要菜单,因此我将 IDE 自动生成的菜单 XML 文件,以及代码中的菜单事件处理函数都删除了。
 
 
代码的讲解这般就结束了,如果有疑问,可以评论提交。
补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,