第一篇 基础知识篇 1
第1章 Android系统概述 1
1.1 智能手机系统介绍 1
1.1.1 何谓智能手机 1
1.1.2 看当前主流的智能手机系统 1
1.2 Android 5.0的特点 2
1.3 Android的巨大优势 3
1.3.1 优势一——系出名门 3
1.3.2 优势二——强大的开发团队 3
1.3.3 优势三——诱人的奖励机制 3
1.3.4 优势四——开源 3
1.4 搭建Android应用开发环境 4
1.4.1 安装Android SDK的系统要求 4
1.4.2 安装JDK 4
1.4.3 获取并安装Eclipse和Android SDK 7
1.4.4 安装ADT 10
1.4.5 设定Android SDK Home 12
1.4.6 验证开发环境 13
1.4.7 创建Android虚拟设备(AVD) 14
1.4.8 启动AVD模拟器 17
第2章 Android核心框架分析 20
2.1 Android安装文件介绍 20
2.1.1 Android SDK目录结构 20
2.1.2 android.jar及内部结构 21
2.1.3 阅读SDK帮助文档 22
2.1.4 常用的SDK工具 23
2.2 剖析Android系统架构 24
2.2.1 Android体系结构介绍 24
2.2.2 Android应用工程文件组成 26
2.3 简述五大组件 29
2.3.1 用Activity表现界面 30
2.3.2 用Intent和IntentFilters实现切换 30
2.3.3 Service服务 30
2.3.4 用BroadcastIntentReceiver发送广播 31
2.3.5 用ContentProvider存储数据 31
2.4 进程和线程 31
2.4.1 先看进程 32
2.4.2 再看线程 32
2.4.3 应用程序的生命周期 32
2.5 第一个Android程序 35
第二篇 核心技术篇 40
第3章 Android游戏开发基础 40
3.1 开发Android游戏的基本流程 40
3.2 Android中的数据存储方式 41
3.2.1 SharedPreferences存储 42
3.2.2 文件存储 44
3.2.3 SQLite存储 45
3.2.4 ContentProvider存储 51
3.2.5 网络存储 55
3.3 访问操作SD卡(手机中的存储卡) 57
3.3.1 解决思路 58
3.3.2 具体实现 58
第4章 绘制游戏角色 67
4.1 绘图类Graphics简介 67
4.2 使用类Color设置文本颜色 67
4.2.1 类Color基础 67
4.2.2 使用类Color更改文字的颜色 68
4.3 使用类Paint绘制图像 69
4.3.1 类Paint基础 69
4.3.2 使用类Color和类Paint实现绘图处理 70
4.4 使用画布类Canvas 73
4.4.1 类Canvas基础 73
4.4.2 使用类Canvas绘制有填充颜色的图形 74
4.5 使用矩形类Rect 76
4.6 类NinePatch基础 79
4.7 使用图形变换类Matrix 80
4.7.1 类Matrix基础 80
4.7.2 使用类Matrix实现图片缩放功能 80
4.8 使用位图操作类Bitmap 85
4.8.1 Bitmap类的功能 85
4.8.2 使用类Bitmap模拟水纹效果 87
4.8.3 使用类Bitmap旋转图片 90
4.9 使用I/O类BitmapFactory 93
4.9.1 类BitmapFactory基础 94
4.9.2 使用类BitmapFactory获取图片的宽和高 94
4.10 使用字体对象类Typeface 97
4.11 使用渲染类Shader 97
4.11.1 类Shader基础 97
4.11.2 使用类Shader渲染不同的图像 98
第5章 使用OpenGL ES构建三维游戏 101
5.1 OpenGLES介绍 101
5.1.1 OpenGLES 3.1 101
5.1.2 Android全面支持OpenGLES 3.1 102
5.2 OpenGL ES的基本应用 102
5.2.1 使用点线法绘制三角形 102
5.2.2 使用索引法绘制三角形 109
5.3 使用OpenGL ES实现投影效果 115
5.3.1 正交投影 115
5.3.2 透视投影 116
5.3.3 正交投影和透视投影的区别 116
5.3.4 实现投影效果实例 116
5.4 使用OpenGL ES实现光照效果 121
5.4.1 什么是光照 121
5.4.2 实现“开启/关闭”光照功能 123
5.5 为游戏增加纹理特效 129
5.5.1 纹理映射的作用 129
5.5.2 实现三角形纹理贴图效果 130
5.6 创建立体图形角色 135
5.7 三维游戏角色坐标定位 144
5.7.1 什么是坐标变换 144
5.7.2 实现缩放变换 144
5.8 为游戏增加3Ds Max特效 150
5.8.1 实现摄像机和雾特效效果 150
5.8.2 实现粒子系统效果 163
第6章 为游戏添加网络功能 168
6.1 Socket技术介绍 168
6.1.1 Socket基础 168
6.1.2 ServerSocket基础 169
6.2 使用HTTP超文本传输协议 170
6.2.1 HTTP基础 170
6.2.2 Android中的HTTP 171
6.2.3 实战演练——传递HTTP参数 172
6.3 下载、上传数据 176
6.3.1 下载网络中的图片数据 177
6.3.2 下载网络中的JSON数据 178
6.3.3 使用GET方式上传数据 184
第7章 为游戏增加音频特效 190
7.1 使用类AudioManager打造游戏声效 190
7.1.1 类AudioManager基础 190
7.1.2 设置短信提示铃声 193
7.2 为游戏设置背景音乐 197
7.2.1 使用AudioTrack播放音频特效 197
7.2.2 使用MediaPlayer播放音频特效 201
7.2.3 使用网络中的MP3作为游戏音效 208
7.2.4 使用SoundPool播放音频特效 215
7.3 实现振动特效 217
7.3.1 类Vibrator的基础 217
7.3.2 将铃声设置为游戏音效 218
第8章 触屏游戏事件处理 224
8.1 基于监听的事件处理 224
8.1.1 监听处理模型中的三种对象 224
8.1.2 Android系统中的监听事件 227
8.1.3 实现事件监听器的方法 228
8.2 基于回调的事件处理 235
8.2.1 Android事件监听器的回调方法 236
8.2.2 基于回调的事件传播 239
8.2.3 重写onTouchEvent方法响应触摸屏事件 241
8.3 响应的系统设置的事件 243
8.3.1 Configuration类详解 244
8.3.2 重写onConfigurationChanged响应系统设置更改 247
8.4 Handler消息传递机制 250
第9章 为游戏设置素材资源 255
9.1 Android的资源类型 255
9.2 如何使用资源 256
9.2.1 在Java代码中使用资源清单项 256
9.2.2 在Java代码中访问实际资源 256
9.2.3 在XML代码中使用资源 257
9.3 “/res/values”目录 258
9.3.1 定义颜色值 258
9.3.2 字符串资源 258
9.3.3 颜色资源文件 259
9.3.4 尺寸资源文件 259
9.3.5 数组资源 260
9.3.6 使用字符串、颜色和尺寸资源 260
9.3.7 使用数组资源 265
9.4 Drawable(图片)资源 268
9.4.1 使用StateListDrawable资源 268
9.4.2 使用LayerDrawable资源 269
9.4.3 使用ShapeDrawable资源 270
9.4.4 使用ClipDrawable资源 271
9.4.5 使用AnimationDrawable资源 271
9.5 使用属性动画(Property Animation)资源 273
9.6 使用原始的XML资源 274
9.7 样式资源和主题资源 277
9.7.1 使用样式资源 277
9.7.2 使用主题资源文件 279
9.8 使用属性资源 281
9.9 使用声音资源 284
第三篇 技术提高篇 287
第10章 Android传感器应用开发详解 287
10.1 Android传感器系统概述 287
10.2 Android传感器应用开发基础 287
10.2.1 查看包含的传感器 288
10.2.2 模拟器测试工具——SensorSimulator 289
10.2.3 实战演练——检测当前设备支持的传感器 293
10.3 使用光线传感器 295
10.3.1 光线传感器介绍 296
10.3.2 使用光线传感器的方法 297
10.4 使用磁场传感器 298
10.4.1 什么是磁场传感器 298
10.4.2 Android系统中的磁场传感器 298
10.5 使用加速度传感器 299
10.5.1 加速度传感器的分类 299
10.5 2 Android系统中的加速度传感器 300
10.6 使用方向传感器 301
10.6.1 方向传感器基础 301
10.6.2 Android中的方向传感器 302
10.7 使用陀螺仪传感器 302
10.7.1 陀螺仪传感器基础 303
10.7.2 Android中的陀螺仪传感器 303
10.8 使用旋转向量传感器 305
10.9 使用距离传感器 306
10.9.1 距离传感器介绍 306
10.9.2 Android系统中的距离传感器 307
10.10 使用气压传感器 309
10.10.1 气压传感器基础 309
10.10.2 气压传感器在智能手机中的应用 309
10.11 使用温度传感器 310
10.11.1 温度传感器介绍 310
10.11.2 Android系统中的温度传感器 311
10.12 使用湿度传感器 313
第11章 游戏中的人工智能算法 315
11.1 人工智能基础 315
11.1.1 人工智能概述 315
11.1.2 两种实现人工智能的方法 315
11.1.3 人工智能在游戏中的应用 316
11.2 图论在人工智能中的应用 318
11.2.1 深度优先搜索(DFS) 318
11.2.2 广度优先搜索(BFS) 320
11.2.3 戴克斯特拉算法(Dijkstra's Algorithm) 322
11.2.4 A*算法 323
11.3 人工智能图搜索算法在Android游戏中的用法 330
11.3.1 搭建路径搜索框架 330
11.3.2 实现深度优先算法 339
11.3.3 实现广度优先算法 341
11.3.4 实现Dijkstra算法 344
11.3.5 实现广度优先A*算法 347
11.3.6 实现DijkstraA*算法 349
第12章 游戏中的Box2D物理引擎 352
12.1 Box2D引擎基础 352
12.1.1 核心概念 352
12.1.2 两种模拟物理世界的算法 353
12.2 将Box2D类库导入Android项目中 353
12.3 Box2D引擎的坐标系 356
12.4 Box2D引擎实战 356
12.4.1 创建Box2D物理世界 356
12.4.2 在物理世界中添加矩形 360
12.4.3 在物理世界中添加自定义多边形 364
12.4.4 在物理世界中添加圆形 369
12.4.5 遍历Body 372
12.4.6 对Body施加力 376
12.4.7 对Body碰撞监听 381
12.4.8 创建关节 388
第四篇 综合实战篇 393
第13章 体育竞技类游戏——疯狂足球 393
13.1 蓬勃发展的手机游戏 393
13.2 足球游戏介绍 393
13.2.1 手机足球游戏 393
13.2.2 策划游戏 394
13.2.3 准备工作 394
13.3 项目架构 395
13.3.1 总体架构 395
13.3.2 规划类 395
13.4 具体编码 396
13.4.1 Activity类开发 396
13.4.2 欢迎界面 402
13.4.3 加载节目 409
13.4.4 运动控制 411
13.4.5 奖品模块 421
第14章 益智类游戏——魔塔游戏 425
14.1 魔塔简介 425
14.1.1 游戏简介 425
14.1.2 发展版本 425
14.2 设计游戏框架 426
14.2.1 设计界面视图 426
14.2.2 屏幕处理 427
14.2.3 更新线程 429
14.2.4 游戏界面显示 431
14.3 绘制处理 432
14.3.1 绘制地图 432
14.3.2 绘制游戏主角 434
14.3.3 绘制对话界面 442
14.3.4 战斗界面 443
14.3.5 图层管理器 446
14.4 实现游戏音效 450
第15章 桌面类小游戏——五子棋和扫雷 453
15.1 开发一个五子棋游戏 453
15.1.1 实例说明 453
15.1.2 具体实现 453
15.2 开发一个扫雷游戏 462
15.2.1 实例说明 462
15.2.2 具体实现 462
第16章 棋牌类游戏——斗地主 471
16.1 斗地主简介 471
16.2 准备素材文件 471
16.3 实现游戏框架 472
16.3.1 系统主界面视图 472
16.3.2 设计菜单视图界面 474
16.3.3 游戏视图界面 477
16.4 实现游戏角色 479
16.4.1 实现扑克角色 479
16.4.2 实现计分角色 497
16.4.3 实现玩家角色 498
16.4.4 实现游戏桌位角色 503
16.5 实现牌面分析 512