Android和PHP开发最佳实践
前言
第一篇 准 备 篇
第1章 学前必读 1
1.1 移动互联网时代的来临 1
1.2 为何选择Android和PHP 2
1.3 如何学习Android和PHP 3
1.3.1 如何学习Android 3
1.3.2 如何学习PHP 4
1.3.3 同时学好Android和PHP 4
1.4 小结 5
第2章 Android开发准备 6
2.1 Android背景知识 6
2.2 Android系统框架 8
2.3 Android应用框架 11
2.3.1 活动(Activity) 12
2.3.2 消息(Intent) 14
2.3.3 视图(View) 16
2.3.4 任务(Task) 17
2.4 Android系统四大组件 19
2.4.1 活动(Activity) 20
2.4.2 服务(Service) 21
2.4.3 广播接收器(Broadcast Receiver) 23
2.4.4 内容提供者(Content Provider) 24
2.5 Android上下文 25
2.5.1 界面上下文(Activity Context) 25
2.5.2 应用上下文(Application Context) 27
2.6 Android数据存储 28
2.6.1 应用配置(Shared Preferences) 28
2.6.2 本地文件(Files) 29
2.6.3 数据库(SQLite) 30
2.7 Android应用界面 31
2.7.1 控件属性 31
2.7.2 布局(Layout) 33
2.7.3 事件(Event) 37
2.7.4 菜单(Menu) 39
2.7.5 主题(Theme) 41
2.7.6 对话框(Dialog) 42
2.8 Android图形界面 43
2.8.1 画笔(Paint) 43
2.8.2 画布(Canvas) 44
2.8.3 基础几何图形 46
2.8.4 常见图形变换 47
2.9 Android动画效果 50
2.9.1 逐帧动画(Frame Animation) 50
2.9.2 补间动画(Tween Animation) 51
2.10 Android开发环境 52
2.10.1 开发环境的搭建 53
2.10.2 首个Android项目 58
2.10.3 使用DDMS调试工具 63
2.11 小结 64
第3章 PHP开发准备 65
3.1 PHP开发基础 65
3.1.1 PHP语言简介 65
3.1.2 PHP语法简介 66
3.1.3 PHP开发起步 68
3.1.4 PHP面向对象编程 75
3.1.5 PHP的会话 78
3.2 PHP开发环境 80
3.2.1 开发环境的搭建 80
3.2.2 安装配置Xampp 81
3.2.3 管理Apache 83
3.2.4 管理MySQL 84
3.3 使用JSON通信 87
3.4 常用PHP开发框架 88
3.5 认识Smarty模板引擎 90
3.6 开发框架简介 93
3.6.1 框架的特点和优势 94
3.6.2 框架的基础目录结构 94
3.6.3 框架MVC思路讲解 97
3.6.4 框架MVC实例分析 99
3.7 小结 108
第二篇 实 战 篇
第4章 实例产品设计 109
4.1 为何选择微博 109
4.2 开发前的准备 110
4.2.1 选择开发模式 110
4.2.2 了解项目策划 111
4.2.3 了解原型设计 112
4.3 功能模块设计 112
4.4 应用界面设计 114
4.5 应用架构设计 115
4.6 通信协议定义 116
4.7 数据库结构设计 118
4.8 小结 120
第5章 程序架构设计 121
5.1 服务端程序架构设计 121
5.1.1 基础框架设计 122
5.1.2 调试框架设计 127
5.1.3 核心类库设计 130
5.1.4 服务端的MVC与SOA 136
5.2 客户端程序架构设计 136
5.2.1 基础框架设计 137
5.2.2 核心类包设计 138
5.2.3 Android应用的MVC 142
5.3 客户端界面架构设计 142
5.3.1 界面框架设计 143
5.3.2 主要界面设计 144
5.4 小结 146
第6章 服务端开发 147
6.1 开发入门 147
6.1.1 接口程序开发 147
6.1.2 调试框架开发 151
6.1.3 生成接口文档 155
6.2 验证接口 156
6.2.1 用户登录接口 156
6.2.2 用户登出接口 160
6.3 用户接口 162
6.3.1 新建用户接口 162
6.3.2 更新用户信息接口 164
6.3.3 查看用户信息接口 165
6.3.4 添加粉丝接口 167
6.3.5 删除粉丝接口 171
6.4 微博接口 172
6.4.1 发表微博接口 172
6.4.2 查看微博接口 174
6.4.3 微博列表接口 176
6.5 评论接口 180
6.5.1 发表评论接口 180
6.5.2 评论列表接口 182
6.6 图片接口 184
6.6.1 用户头像接口 185
6.6.2 头像列表接口 188
6.7 通知接口 189
6.8 Web版接口 192
6.8.1 Web版UI界面(jQuery Mobile) 193
6.8.2 Web版地图接口 195
6.9 小结 196
第7章 客户端开发 198
7.1 开发入门 198
7.1.1 开发思路梳理 198
7.1.2 掌握应用配置文件 200
7.1.3 常规程序开发与调试 211
7.2 界面布局和行为控制 221
7.2.1 使用Layout布局 221
7.2.2 使用Merge整合界面 224
7.2.3 使用Event控制用户行为 226
7.2.4 使用Intent控制界面切换 228
7.3 网络通信模块 231
7.3.1 使用HttpClient进行网络通信 231
7.3.2 支持CMWAP网络接入方式 237
7.3.3 使用JSON库为消息解码 240
7.3.4 使用Toast消息提示 245
7.4 异步任务模块 247
7.4.1 进程和线程 247
7.4.2 任务创建Thread 249
7.4.3 任务处理Handler 255
7.4.4 使用异步任务AsyncTask 257
7.5 全局功能模块 259
7.5.1 全局UI基类 259
7.5.2 全局Menu菜单 264
7.5.3 全局Dialog窗口 265
7.5.4 使用Service获取通知 266
7.5.5 使用Notification显示通知 270
7.6 用户登录界面 273
7.6.1 界面程序逻辑 273
7.6.2 使用TextView 273
7.6.3 使用EditText 274
7.6.4 使用Button 276
7.6.5 使用Shape和Selector 277
7.6.6 使用CheckBox 279
7.6.7 使用SharedPreference 280
7.7 微博列表界面 281
7.7.1 界面程序逻辑 281
7.7.2 使用ListView 286
7.7.3 使用ImageView 290
7.7.4 使用draw9patch 292
7.7.5 异步获取远程图片 294
7.7.6 使用SdCard缓存图片 297
7.7.7 使用SQLite缓存数据 300
7.8 我的微博列表 303
7.8.1 界面程序逻辑 303
7.8.2 使用ScrollView 309
7.8.3 使用自定义微博列表 310
7.9 微博文章界面 313
7.9.1 界面程序逻辑 313
7.9.2 界面布局进阶(综合使用UI控件) 319
7.9.3 发表评论功能实现 322
7.9.4 发表微博功能实现 326
7.10 用户配置界面 328
7.10.1 界面程序逻辑 328
7.10.2 使用自定义选项列表 333
7.10.3 修改签名功能实现 334
7.10.4 更换头像功能实现 334
7.11 网页界面开发 340
7.11.1 界面程序逻辑 340
7.11.2 使用WebView 341
7.11.3 使用ProgressDialog 343
7.11.4 使用WebView的重写和回调 346
7.11.5 网页地图实例分析 348
7.12 小结 349
第三篇 优 化 篇
第8章 性能分析 351
8.1 关于性能测试 351
8.1.1 服务端压力测试 352
8.1.2 客户端性能测试 359
8.2 瓶颈 364
8.2.1 服务端瓶颈分析 365
8.2.2 客户端瓶颈分析 366
8.3 优化的思路 366
8.4 小结 367
第9章 服务端优化 368
9.1 优化PHP程序 368
9.1.1 优化PHP代码 368
9.1.2 优化Session机制 371
9.1.3 使用缓存中间件 373
9.1.4 使用APC加速 376
9.2 优化数据传输 377
9.2.1 优化JSON协议 377
9.2.2 使用gzip压缩 379
9.3 其他优化 380
9.3.1 服务器优化 380
9.3.2 数据库优化 383
9.3.3 网络优化 386
9.4 小结 386
第10章 客户端优化 387
10.1 优化Android程序 387
10.1.1 优化Java代码 387
10.1.2 异步获取数据 391
10.1.3 文件资源缓存 391
10.1.4 数据库缓存 392
10.2 避免内存泄露 392
10.2.1 Android内存管理 392
10.2.2 如何判断内存泄露 393
10.2.3 常见内存泄露的处理 395
10.3 优化Android UI 396
10.3.1 模板代码优化 396
10.3.2 关于布局优化 397
10.3.3 使用Hierarchy Viewer工具 402
10.4 其他优化 403
10.4.1 优化图片 403
10.4.2 优化APK包 403
10.4.3 使用keytool和jarsigner签名 404
10.4.4 使用zipalign优化 407
10.5 小结 408
第四篇 进 阶 篇
第11章 Android特色功能开发 409
11.1 使用Google Map API 409
11.2 使用LBS功能 414
11.3 使用传感器 419
11.4 使用摄像头 422
11.5 多媒体开发 431
11.6 语音识别 439
11.7 小结 441
第12章 Android NDK开发 442
12.1 NDK开发基础 442
12.1.1 使用NDK的原因 442
12.1.2 使用NDK调用C或C++ 443
12.1.3 Android.mk和Application.mk 445
12.2 NDK开发入门 448
12.2.1 开发环境搭建 448
12.2.2 首个NDK项目 449
12.3 小结 456
第13章 Android游戏开发 457
13.1 手游开发基础 457
13.1.1 手游开发思路解析 457
13.1.2 贪食蛇和飞船游戏实例 462
13.1.3 认识Android游戏引擎 464
13.1.4 使用OpenGL和OpenGL ES 466
13.1.5 使用RenderScript 472
13.2 手游开发进阶 474
13.2.1 认识Cocos2d-x 475
13.2.2 架设Cocos2d-x开发环境 475
13.2.3 首个Cocos2d-x项目 475
13.2.4 认识Unity 3D 487
13.3 小结 489
附录A Hush Framework框架实例源码部署 490
附录B 微博应用实例源码部署 495
第一篇 准 备 篇
第1章 学前必读 1
1.1 移动互联网时代的来临 1
1.2 为何选择Android和PHP 2
1.3 如何学习Android和PHP 3
1.3.1 如何学习Android 3
1.3.2 如何学习PHP 4
1.3.3 同时学好Android和PHP 4
1.4 小结 5
第2章 Android开发准备 6
2.1 Android背景知识 6
2.2 Android系统框架 8
2.3 Android应用框架 11
2.3.1 活动(Activity) 12
2.3.2 消息(Intent) 14
2.3.3 视图(View) 16
2.3.4 任务(Task) 17
2.4 Android系统四大组件 19
2.4.1 活动(Activity) 20
2.4.2 服务(Service) 21
2.4.3 广播接收器(Broadcast Receiver) 23
2.4.4 内容提供者(Content Provider) 24
2.5 Android上下文 25
2.5.1 界面上下文(Activity Context) 25
2.5.2 应用上下文(Application Context) 27
2.6 Android数据存储 28
2.6.1 应用配置(Shared Preferences) 28
2.6.2 本地文件(Files) 29
2.6.3 数据库(SQLite) 30
2.7 Android应用界面 31
2.7.1 控件属性 31
2.7.2 布局(Layout) 33
2.7.3 事件(Event) 37
2.7.4 菜单(Menu) 39
2.7.5 主题(Theme) 41
2.7.6 对话框(Dialog) 42
2.8 Android图形界面 43
2.8.1 画笔(Paint) 43
2.8.2 画布(Canvas) 44
2.8.3 基础几何图形 46
2.8.4 常见图形变换 47
2.9 Android动画效果 50
2.9.1 逐帧动画(Frame Animation) 50
2.9.2 补间动画(Tween Animation) 51
2.10 Android开发环境 52
2.10.1 开发环境的搭建 53
2.10.2 首个Android项目 58
2.10.3 使用DDMS调试工具 63
2.11 小结 64
第3章 PHP开发准备 65
3.1 PHP开发基础 65
3.1.1 PHP语言简介 65
3.1.2 PHP语法简介 66
3.1.3 PHP开发起步 68
3.1.4 PHP面向对象编程 75
3.1.5 PHP的会话 78
3.2 PHP开发环境 80
3.2.1 开发环境的搭建 80
3.2.2 安装配置Xampp 81
3.2.3 管理Apache 83
3.2.4 管理MySQL 84
3.3 使用JSON通信 87
3.4 常用PHP开发框架 88
3.5 认识Smarty模板引擎 90
3.6 开发框架简介 93
3.6.1 框架的特点和优势 94
3.6.2 框架的基础目录结构 94
3.6.3 框架MVC思路讲解 97
3.6.4 框架MVC实例分析 99
3.7 小结 108
第二篇 实 战 篇
第4章 实例产品设计 109
4.1 为何选择微博 109
4.2 开发前的准备 110
4.2.1 选择开发模式 110
4.2.2 了解项目策划 111
4.2.3 了解原型设计 112
4.3 功能模块设计 112
4.4 应用界面设计 114
4.5 应用架构设计 115
4.6 通信协议定义 116
4.7 数据库结构设计 118
4.8 小结 120
第5章 程序架构设计 121
5.1 服务端程序架构设计 121
5.1.1 基础框架设计 122
5.1.2 调试框架设计 127
5.1.3 核心类库设计 130
5.1.4 服务端的MVC与SOA 136
5.2 客户端程序架构设计 136
5.2.1 基础框架设计 137
5.2.2 核心类包设计 138
5.2.3 Android应用的MVC 142
5.3 客户端界面架构设计 142
5.3.1 界面框架设计 143
5.3.2 主要界面设计 144
5.4 小结 146
第6章 服务端开发 147
6.1 开发入门 147
6.1.1 接口程序开发 147
6.1.2 调试框架开发 151
6.1.3 生成接口文档 155
6.2 验证接口 156
6.2.1 用户登录接口 156
6.2.2 用户登出接口 160
6.3 用户接口 162
6.3.1 新建用户接口 162
6.3.2 更新用户信息接口 164
6.3.3 查看用户信息接口 165
6.3.4 添加粉丝接口 167
6.3.5 删除粉丝接口 171
6.4 微博接口 172
6.4.1 发表微博接口 172
6.4.2 查看微博接口 174
6.4.3 微博列表接口 176
6.5 评论接口 180
6.5.1 发表评论接口 180
6.5.2 评论列表接口 182
6.6 图片接口 184
6.6.1 用户头像接口 185
6.6.2 头像列表接口 188
6.7 通知接口 189
6.8 Web版接口 192
6.8.1 Web版UI界面(jQuery Mobile) 193
6.8.2 Web版地图接口 195
6.9 小结 196
第7章 客户端开发 198
7.1 开发入门 198
7.1.1 开发思路梳理 198
7.1.2 掌握应用配置文件 200
7.1.3 常规程序开发与调试 211
7.2 界面布局和行为控制 221
7.2.1 使用Layout布局 221
7.2.2 使用Merge整合界面 224
7.2.3 使用Event控制用户行为 226
7.2.4 使用Intent控制界面切换 228
7.3 网络通信模块 231
7.3.1 使用HttpClient进行网络通信 231
7.3.2 支持CMWAP网络接入方式 237
7.3.3 使用JSON库为消息解码 240
7.3.4 使用Toast消息提示 245
7.4 异步任务模块 247
7.4.1 进程和线程 247
7.4.2 任务创建Thread 249
7.4.3 任务处理Handler 255
7.4.4 使用异步任务AsyncTask 257
7.5 全局功能模块 259
7.5.1 全局UI基类 259
7.5.2 全局Menu菜单 264
7.5.3 全局Dialog窗口 265
7.5.4 使用Service获取通知 266
7.5.5 使用Notification显示通知 270
7.6 用户登录界面 273
7.6.1 界面程序逻辑 273
7.6.2 使用TextView 273
7.6.3 使用EditText 274
7.6.4 使用Button 276
7.6.5 使用Shape和Selector 277
7.6.6 使用CheckBox 279
7.6.7 使用SharedPreference 280
7.7 微博列表界面 281
7.7.1 界面程序逻辑 281
7.7.2 使用ListView 286
7.7.3 使用ImageView 290
7.7.4 使用draw9patch 292
7.7.5 异步获取远程图片 294
7.7.6 使用SdCard缓存图片 297
7.7.7 使用SQLite缓存数据 300
7.8 我的微博列表 303
7.8.1 界面程序逻辑 303
7.8.2 使用ScrollView 309
7.8.3 使用自定义微博列表 310
7.9 微博文章界面 313
7.9.1 界面程序逻辑 313
7.9.2 界面布局进阶(综合使用UI控件) 319
7.9.3 发表评论功能实现 322
7.9.4 发表微博功能实现 326
7.10 用户配置界面 328
7.10.1 界面程序逻辑 328
7.10.2 使用自定义选项列表 333
7.10.3 修改签名功能实现 334
7.10.4 更换头像功能实现 334
7.11 网页界面开发 340
7.11.1 界面程序逻辑 340
7.11.2 使用WebView 341
7.11.3 使用ProgressDialog 343
7.11.4 使用WebView的重写和回调 346
7.11.5 网页地图实例分析 348
7.12 小结 349
第三篇 优 化 篇
第8章 性能分析 351
8.1 关于性能测试 351
8.1.1 服务端压力测试 352
8.1.2 客户端性能测试 359
8.2 瓶颈 364
8.2.1 服务端瓶颈分析 365
8.2.2 客户端瓶颈分析 366
8.3 优化的思路 366
8.4 小结 367
第9章 服务端优化 368
9.1 优化PHP程序 368
9.1.1 优化PHP代码 368
9.1.2 优化Session机制 371
9.1.3 使用缓存中间件 373
9.1.4 使用APC加速 376
9.2 优化数据传输 377
9.2.1 优化JSON协议 377
9.2.2 使用gzip压缩 379
9.3 其他优化 380
9.3.1 服务器优化 380
9.3.2 数据库优化 383
9.3.3 网络优化 386
9.4 小结 386
第10章 客户端优化 387
10.1 优化Android程序 387
10.1.1 优化Java代码 387
10.1.2 异步获取数据 391
10.1.3 文件资源缓存 391
10.1.4 数据库缓存 392
10.2 避免内存泄露 392
10.2.1 Android内存管理 392
10.2.2 如何判断内存泄露 393
10.2.3 常见内存泄露的处理 395
10.3 优化Android UI 396
10.3.1 模板代码优化 396
10.3.2 关于布局优化 397
10.3.3 使用Hierarchy Viewer工具 402
10.4 其他优化 403
10.4.1 优化图片 403
10.4.2 优化APK包 403
10.4.3 使用keytool和jarsigner签名 404
10.4.4 使用zipalign优化 407
10.5 小结 408
第四篇 进 阶 篇
第11章 Android特色功能开发 409
11.1 使用Google Map API 409
11.2 使用LBS功能 414
11.3 使用传感器 419
11.4 使用摄像头 422
11.5 多媒体开发 431
11.6 语音识别 439
11.7 小结 441
第12章 Android NDK开发 442
12.1 NDK开发基础 442
12.1.1 使用NDK的原因 442
12.1.2 使用NDK调用C或C++ 443
12.1.3 Android.mk和Application.mk 445
12.2 NDK开发入门 448
12.2.1 开发环境搭建 448
12.2.2 首个NDK项目 449
12.3 小结 456
第13章 Android游戏开发 457
13.1 手游开发基础 457
13.1.1 手游开发思路解析 457
13.1.2 贪食蛇和飞船游戏实例 462
13.1.3 认识Android游戏引擎 464
13.1.4 使用OpenGL和OpenGL ES 466
13.1.5 使用RenderScript 472
13.2 手游开发进阶 474
13.2.1 认识Cocos2d-x 475
13.2.2 架设Cocos2d-x开发环境 475
13.2.3 首个Cocos2d-x项目 475
13.2.4 认识Unity 3D 487
13.3 小结 489
附录A Hush Framework框架实例源码部署 490
附录B 微博应用实例源码部署 495
读者书评