代码应该是比较简单的,如果下载了源文件,理解起来会比较容易。而且贴出代码,显得太累赘,为此我做了下面这张图,其实就是对第一节那个简图的增加版:


使用 ViewPager 是因为我在官方教程里看到了这篇文章:Using ViewPager for Screen Slides,里面还提供了例程下载,再结合上图,可以了解整个过程。

运行的流程按我的理解如下:

  1. MainActivity执行,当屏幕初始化显示时,调用 onCreate() (这里用回调方式,可以避免对象在内存中创建,但未让屏幕显示时被执行画图处理,可以节约系统开支)
  2. onCreate() 中初始化 ViewPager,给出用于页帧管理的对象 CalendarPagerAdapter;设置初始要显示的页码。
  3. ViewPager 针对当前要显示的页码,向 CalendarPagerAdapter 请求包括相邻的两个页的 Fragment,共创建了三个帧对象。如果你用调试去跟踪,你会发现我在上面所说的现象,虽然是创建了三帧对象,但只有一帧的 onCreateView() 方法被调用,因为其它两帧还不需要在屏幕上绘制。
  4. 当某一帧要在屏幕上显示时,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 文件,以及代码中的菜单事件处理函数都删除了。


代码的讲解这般就结束了,如果有疑问,可以评论提交。


[待续]


接下来一节再深入一下样式与主题,最后讲一下如何更换应用的图标,以及其它常用技巧。

更多相关文章

  1. android EditText设置不可写
  2. android 使用html5作布局文件: webview跟javascript交互
  3. android studio调试c/c++代码
  4. IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
  5. 锁屏界面
  6. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序
  7. Android之菜单总结
  8. Android(安卓)version and Linux Kernel version
  9. Android(安卓)闹钟管理类的使用

随机推荐

  1. Mysql解决数据库N+1查询问题
  2. MySQL全文索引实现简单版搜索引擎实例代
  3. MYSQL事务教程之Yii2.0商户提现功能
  4. mysql查询字段类型为json时的两种查询方
  5. MySQL用户与权限的管理详解
  6. MySQL游标概念与用法详解
  7. MySQL存储过程概念、原理与常见用法详解
  8. 简单了解mysql方言dialect
  9. MySQL触发器概念、原理与用法详解
  10. MySQL中NULL对索引的影响深入讲解