《Android游戏编程入门经典》(作者哈伯)介绍针对智能手机和平板电脑所使用的Android 4移动操作系统编写游戏。本书的理想读者是了解Java并且之前已经涉足游戏编程的程序员,以及需要关于Android平台入门书籍的程序员。本书并不高深,没有介绍任何3D内容(通过OpenGL ES 2.0),适合初级和中级水平的读者阅读。完整地介绍OpenGL ES需要一整本书,本书旨在介绍Android 4游戏开发中最重要的概念,而不是解决高性能渲染问题。但是,本书会将您带到了解OpenGLES的位置。您将深入理解Android硬件,包括显示系统、音频系统、传感器和触摸屏。本书最后几章演示了一个游戏引擎示例。
Android是一种基于Linux的自由及开放源码的操作系统,自从2007年被Google公司发布以来,载有Android平台的智能设备在全球消费者市场攻城略地,如今其市场占有率已经全面超越其他移动平台,稳居世界第一。
《Android游戏编程入门经典》(作者哈伯)分为3部分,基于最新的Android 4编写,循序渐进地介绍了Android移动游戏开发所需要的基本知识,其中包括安装和配置开发工具、Android SDK;学习与Android相关的知识,以及使用SDK支持的Android设备,比如图形设备、触摸屏、音频系统和传感器;使用辅助类来创建Android平台的基本游戏引擎,这些辅助类涵盖了编写大多数视频游戏所需要的常见游戏功能。此外,本书还给出了每个示例的代码供读者参考。
《Android游戏编程入门经典》适合有一定Java基础和编程经验的读者阅读,也适合有志于从事Android平台游戏开发的读者阅读。
第1部分 简介
第1章 Android 4简介 3
1.1 Android 4简介 3
1.2 Android SDK简介 6
1.3 Android NDK简介 7
1.4 Android开发系统要求 7
1.5 Android平台的历史 7
1.6 Android硬件规格 8
1.7 小结 10
1.8 问与答 10
1.9 测验 10
1.9.1 问题 10
1.9.2 答案 10
1.9.3 作业 10
第2章 安装开发工具 11
2.1 安装JDK 11
2.2 下载NetBeans软件包 12
2.3 安装软件包 13
2.4 安装Android SDK 14
2.5 下载SDK 14
2.6 安装SDK 15
2.7 运行Android SDK Manager 16
2.8 安装Eclipse的ADT插件 18
2.9 小结 19
2.10 问与答 19
2.11 测验 20
2.11.1 问题 20
2.11.2 答案 20
2.11.3 作业 20
第3章 使用Android SDK配置NetBeans和Eclipse 21
3.1 创建Android模拟器设备 21
3.2 创建新模拟器设备 22
3.3 运行模拟器 23
3.4 将Android SDK添加到NetBeans中 24
3.5 为Eclipse添加Android SDK支持 27
3.5.1 在Eclipse中创建新Android项目 27
3.5.2 选择Android构建目标 29
3.6 小结 30
3.7 问与答 30
3.8 测验 30
3.8.1 问题 30
3.8.2 答案 31
3.8.3 作业 31
第4章 创建第一个Android程序 32
4.1 创建新的Android项目 32
4.1.1 配置NBAndroid插件 34
4.1.2 完成新项目设置 35
4.2 构建新项目 35
4.2.1 打开输出窗口 36
4.2.2 在模拟器中运行程序 37
4.3 编辑Hello,Android!程序 41
4.4 对比模拟器和Android设备 42
4.4.1 AVD限制 43
4.4.2 安装Android Debug Bridge Device Driver 44
4.4.3 在Android设备上运行代码 46
4.5 小结 48
4.6 问与答 49
4.7 测验 49
4.7.1 问题 49
4.7.2 答案 49
4.7.3 作业 49
第2部分 Android硬件
第5章 开始使用图形 53
5.1 了解Activity类 53
5.1.1 程序生命周期 54
5.1.2 可视生命周期 55
5.1.3 前台生命周期 55
5.2 测试Activity状态 55
5.2.1 创建新项目 55
5.2.2 源代码 58
5.3 世界上最简单的Android图形演示 59
5.3.1 取消选中第一个图形演示 61
5.3.2 画布和视图简介 62
5.4 小结 63
5.5 问与答 63
5.6 测验 63
5.6.1 问题 63
5.6.2 答案 63
5.6.3 作业 63
第6章 绘制基本形状和文本 64
6.1 绘制基本矢量形状 64
6.1.1 绘制圆形 64
6.1.2 绘制线条 64
6.1.3 绘制方框 65
6.1.4 绘制圆角矩形 65
6.1.5 绘制三角形 66
6.1.6 更改样式:描边和填充 66
6.1.7 基本图形演示 66
6.2 绘制文本 69
6.3 编写Javadoc的代码 72
6.4 Android屏幕密度和分辨率 73
6.5 小结 77
6.6 问与答 77
6.7 测验 77
6.7.1 问题 77
6.7.2 答案 77
6.7.3 作业 77
第7章 加载和绘制图像 78
7.1 双缓冲绘图 78
7.1.1 创建内存位图 78
7.1.2 创建绘图画布 79
7.1.3 使用后台缓冲 79
7.2 加载位图文件 81
7.2.1 添加位图资产 82
7.2.2 使用AssetManager 83
7.2.3 使用InputStream 84
7.2.4 使用BitmapFactory 84
7.2.5 关闭输入流 84
7.2.6 完整的位图加载代码 84
7.3 绘制位图 85
7.3.1 为透明度创建aplha通道 86
7.3.2 完成的示例 88
7.4 小结 89
7.5 问与答 89
7.6 测验 90
7.6.1 问题 90
7.6.2 答案 90
7.6.3 作业 90
第8章 使用循环赋予游戏活力 91
8.1 创建线程游戏循环 91
8.1.1 查看非线程代码 91
8.1.2 编写线程代码 92
8.2 不使用onDraw()进行绘制 93
8.3 Runnable Animation Demo 95
8.3.1 为行走的角色制作动画 95
8.3.2 项目源代码 96
8.4 小结 100
8.5 问与答 100
8.6 测验 100
8.6.1 问题 100
8.6.2 答案 100
8.6.3 作业 101
第9章 多点触摸用户输入 102
9.1 单点触摸输入 102
9.1.1 监听触摸事件 102
9.1.2 单点触摸输入演示 103
9.2 多点触摸输入 106
9.2.1 简单示例 107
9.2.2 封装多点触摸输入 108
9.2.3 多点触摸演示 108
9.3 小结 111
9.4 问与答 111
9.5 测验 112
9.5.1 问题 112
9.5.2 答案 112
9.5.3 作业 112
第10章 使用加速度计 113
10.1 Android传感器 113
10.1.1 访问传感器 114
10.1.2 禁用屏幕方向改变 115
10.1.3 加速度计初始化 115
10.1.4 加速度计运动 116
10.1.5 获取可用传感器列表 117
10.1.6 完整示例 118
10.2 小结 121
10.3 问与答 121
10.4 测验 122
10.4.1 问题 122
10.4.2 答案 122
10.4.3 作业 122
第11章 使用线性加速度传感器和近距离传感器 123
11.1 访问线性加速度传感器 123
11.1.1 初始化线性加速度传感器 124
11.1.2 关于暂停和恢复 124
11.1.3 读取传感器 124
11.1.4 线性加速度演示 125
11.2 访问近距离传感器 129
11.3 小结 130
11.4 问与答 130
11.5 测验 130
11.5.1 问题 130
11.5.2 答案 131
11.5.3 作业 131
第12章 使用重力传感器和压力传感器 132
12.1 使用重力传感器 132
12.1.1 初始化重力传感器 132
12.1.2 读取重力传感器 133
12.1.3 测试重力传感器 134
12.2 使用压力传感器 138
12.2.1 初始化压力传感器 138
12.2.2 读取压力传感器 139
12.3 小结 139
12.4 问与答 139
12.5 测验 139
12.5.1 问题 139
12.5.2 答案 140
12.5.3 作业 140
第13章 创建自己的“手机传感器” 141
13.1 封装Android传感器 141
13.1.1 BaseSensor 142
13.1.2 加速度计 142
13.1.3 线性加速度 143
13.1.4 近距离传感器 143
13.1.5 重力传感器 143
13.1.6 压力传感器 144
13.1.7 陀螺仪传感器 144
13.1.8 指南针 144
13.1.9 光检测器 145
13.2 创建手机传感器项目 145
13.2.1 包和导入 146
13.2.2 主要类 146
13.2.3 DrawView 147
13.2.4 暂停和恢复 147
13.2.5 线程进程 147
13.2.6 创建面板 148
13.2.7 更新传感器 149
13.2.8 绘制传感器面板 149
13.2.9 辅助方法 150
13.2.10 SensorPanel类 150
13.2.11 输出文本行 151
13.2.12 Sensors类 152
13.2.13 捕捉传感器事件 153
13.2.14 未使用的准确性事件 154
13.2.15 暂停和恢复应用程序 154
13.2.16 BaseSensor类 156
13.2.17 各种传感器类 157
13.3 小结 158
13.4 问与答 158
13.5 测验 158
13.5.1 问题 158
13.5.2 答案 159
13.5.3 作业 159
第14章 使用音频系统 160
14.1 使用MediaPlayer播放音频 160
14.1.1 受支持的音频格式 160
14.1.2 初始化MediaPlayer 161
14.1.3 将音频文件添加到项目中 161
14.1.4 播放音频剪辑 163
14.2 使用SoundPool播放音频 163
14.2.1 初始化SoundPool 164
14.2.2 加载音频资源 164
14.2.3 播放音频资源 164
14.2.4 Audio Demo程序 165
14.3 小结 166
14.4 问与答 166
14.5 测验 166
14.5.1 问题 166
14.5.2 答案 167
14.5.3 作业 167
第3部分 Android Gameplay
第15章 构建Android游戏引擎 171
15.1 设计Android游戏引擎 171
15.1.1 设计目标 172
15.1.2 引擎组件 172
15.2 创建Android库项目 174
15.3 编写核心引擎类 178
15.3.1 Engine类 178
15.3.2 Timer类 185
15.3.3 TextPrinter类 186
15.3.4 Texture类 187
15.4 引擎测试演示项目 188
15.4.1 引擎演示源代码 190
15.4.2 记录引擎演示的日志 192
15.5 小结 193
15.6 问与答 193
15.7 测验 193
15.7.1 问题 193
15.7.2 答案 193
15.7.3 作业 193
第16章 创建Sprite/Actor类 194
16.1 静态子画面为道具 194
16.2 动态子画面为角色 195
16.3 封装基本子画面功能 196
16.3.1 拟定计划和设计 197
16.3.2 新Sprite类的简介 197
16.3.3 回顾Texture 198
16.4 测试Sprite类 199
16.4.1 子画面演示源代码 200
16.4.2 测试Sprite类 202
16.5 小结 203
16.6 问与答 203
16.7 测验 203
16.7.1 问题 203
16.7.2 答案 203
16.7.3 作业 203
第17章 使用子画面表单/地图集制作帧动画 204
17.1 使用一张图像制作动画 204
17.1.1 排列动画帧 204
17.1.2 从连续图像绘制帧 205
17.2 使用子画面表单(纹理地图集)制作动画 206
17.3 动画演示 207
17.4 小结 211
17.5 问与答 211
17.6 测验 211
17.6.1 问题 211
17.6.2 答案 212
17.6.3 作业 212
第18章 高级多动画技术 213
18.1 创建动画系统 213
18.1.1 编写动画基类 213
18.1.2 Sprite类改进 214
18.1.3 alpha动画 218
18.1.4 帧动画 219
18.1.5 旋转动画 220
18.1.6 跳动动画 221
18.1.7 圆周运动动画 222
18.2 动画系统演示 222
18.3 小结 226
18.4 问与答 226
18.5 测验 226
18.5.1 问题 226
18.5.2 答案 227
18.5.3 作业 227
第19章 使用矩阵变换处理子画面 228
19.1 矩阵平移 228
19.1.1 坐标系 229
19.1.2 矩阵平移选项 231
19.2 矩阵旋转 232
19.3 矩阵缩放 233
19.4 矩阵变换演示 233
19.4.1 结合使用三个矩阵 234
19.4.2 将帧渲染到划痕位图 234
19.4.3 获得屏幕分辨率(Precanvas) 235
19.4.4 “扭曲”行为 236
19.4.5 更新的Sprite类 237
19.4.6 子画面变换演示 241
19.5 小结 244
19.6 问与答 244
19.7 测验 244
19.7.1 问题 244
19.7.2 答案 244
19.7.3 作业 245
第20章 实体分组 246
20.1 实体分组 246
20.1.1 引擎改进 246
20.1.2 跳动动画更新 249
20.1.3 扭曲行为更新 250
20.1.4 围栏行为 251
20.1.5 实体分组演示 251
20.2 小结 254
20.3 问与答 255
20.4 测验 255
20.4.1 问题 255
20.4.2 答案 255
20.4.3 作业 255
第21章 碰撞检测 256
21.1 碰撞检测技术 256
21.1.1 边界矩形(框碰撞) 256
21.1.2 边界圆形(径向碰撞) 257
21.2 演示碰撞 259
21.2.1 引擎改进 259
21.2.2 子画面改进 262
21.2.3 碰撞演示源代码 264
21.3 小结 267
21.4 问与答 267
21.5 测验 267
21.5.1 问题 267
21.5.2 答案 268
21.5.3 作业 268
第22章 使用线性速度实现实际运动 269
22.1 从一个方向计算速度 269
22.2 在移动方向上“定位”子画面 271
22.3 改进引擎 273
22.3.1 Sprite类的变化 273
22.3.2 改进动画类 275
22.3.3 对速度行为进行分类 276
22.3.4 更新圆周运动类 277
22.3.5 更新围栏行为 278
22.3.6 更新扭曲行为 279
22.3.7 引擎改进 280
22.4 小结 284
22.5 问与答 284
22.6 测验 284
22.6.1 问题 284
22.6.2 答案 285
22.6.3 作业 285
第23章 滚动背景 286
23.1 背景滚动概述 286
23.1.1 翻转滚动矩形 286
23.1.2 创建滚动纹理 287
23.2 射击游戏 288
23.3 小结 294
23.4 问与答 294
23.5 测验 295
23.5.1 问题 295
23.5.2 答案 295
23.5.3 作业 295
第24章 球类游戏 296
24.1 创建球类游戏 296
24.1.1 自动移动球 297
24.1.2 自动限制球拍 298
24.1.3 球类游戏源代码 299
24.2 小结 303
24.3 问与答 303
24.4 测验 303
24.4.1 问题 303
24.4.2 答案 303
24.4.3 作业 304