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 日历开发教程[六]相关推荐
- Android 日历开发教程[一]
前言:决定开始学习 Android 平台下的软件开发,以日历作为实践项目,进行一周后,基本完成. 为了总结及笔记,并给有需要的朋友借鉴,开始整理本教程. 开始之前: 在编写程序之前,需要进行项目设计, ...
- Android 日历开发教程[四]
这节开始制作 Activity 视图. 视图的设计,在原理上可以借鉴 HTML 设计,目前大家的共识是内容与样式分离,也就是内容在 HTML 文件中定义,样式在 CSS 文件中对应. 同样,Andro ...
- android 日历开发教程,android 开发教程之日历项目实践(三)
二.创建样式 日历显示的表格线,使用 Cell 填充图形的边框来实现,为了统一,我们先定义边框线的颜色及线条精细. 另外还要定义一系统填充样式等. 创建 color: color_calendar_b ...
- Android 日历开发教程[三]
二.创建样式 日历显示的表格线,使用 Cell 填充图形的边框来实现,为了统一,我们先定义边框线的颜色及线条精细. 另外还要定义一系统填充样式等. 创建 color: color_calendar_b ...
- android ndk 多线程mk,Android NDK 开发教程六: application.mk
配合android.mk 使用的make 文件还有一个application.mk ,大部分情况无需修改该文件,下面也来自网络翻译 Application.mk文件 简介: ---------– 要将 ...
- Android 日历开发教程[二]
一.创建 Android Project 在新建对话框中输入 App 属性,SDK版本全部选最新的,不作版本兼容.主题选择 Holo Dark. 下一步,使用默认设置 下一步,使用默认设置 下一步,使 ...
- Android 日历开发教程[五]
农历计算类 农历计算的算法,来源于:http://sean.o4u.com/ap/calendar/,具体的代码基本与来源处的 javascript 相同,差不多只是语言上的转换而已. 将这个类命名为 ...
- android项目开发教程,Android项目开发教程
Android项目开发教程 编辑 锁定 讨论 上传视频 Android项目开发教程 书 名 Android项目开发教程 作 者 车金庆.何征天.李琳.严正宇.周凌翱 类 别 图书&g ...
- Android WiFi开发教程(三)——WiFi热点数据传输
在上一篇文章中介绍了WiFi的搜索和连接,如果你还没阅读过,建议先阅读上一篇Android WiFi开发教程(二)--WiFi的搜索和连接.本篇接着简单介绍手机上如何通过WiFi热点进行数据传输. 跟 ...
最新文章
- React Native 的图片加载方式
- 【算法基础】数据结构导论第三章-栈、队列和数组.pptx
- Mysql数据库大表归档操作
- JAVA第一个GUI程序---计算器
- 数据结构基础(12) --双向循环链表的设计与实现
- 【AI面试题】什么是数据不平衡,如何解决
- vc中运行外部程序的方法
- 【自动控制原理】 时域分析法
- Office系列软件之间不兼容以及office修复
- 记录下docker命令
- 优秀的程序员真的不写注释吗?
- 201819102040张辰飞
- 我没有基础,能学会Python吗?
- 药厂中PLD-601不溶性微粒检查仪IoT的流程梳理
- 模块化多电平变换器,MMC载波移相脉冲宽度调制
- 【web百度离线地图开发】原生实现百度地图离线版速览
- 怎么在mysql数据库中放图片_如何将图片储存在MySQL数据库中
- java qq登陆界面源码下载_javaSwingQQ登录界面
- 使用cmd命令修改IP地址
- python离散因变量模型
热门文章
- Hadoop 从入门到精通----编程不良人笔记
- 5s手机主题被删如何恢复
- Cocos2d-x 3.0 开发(八)骨骼动画的动态换肤
- 深度(穿透)选择器 ::v-deep /deep/ 及 >>>
- 心情烦躁的时候怎么缓解
- 从一道腾讯笔试编程题看——并查集
- hadoop单机及完全分布式集群的安装
- IOS开发之——数据库-基础知识介绍(01)
- 中国式家长游戏制作人php要学,当“中国式家长”成为游戏,果然火了!
- 三名学霸与计算机的缘,这三类家庭与学霸无缘,不是父母不用心,错在教育方式...