第一章 Android开发环境 1
1.1 Android开发环境简介 1
1.2 基于Eclipse的开发环境 1
1.2.1 开发环境的搭建 2
1.2.2 项目结构 10
1.2.3 使用第三方库 12
1.2.4 项目的运行和调试 13
1.3 基于Android Studio的开发环境 15
1.3.1 Android Studio的特点 15
1.3.2 搭建Android Studio应用开发环境 16
1.3.3 Android Studio 2.3的新特性 23
1.3.4 安装Android Studio新插件 26
1.3.5 详解项目中的资源 30
1.3.6 详解build.gradle文件 33
1.3.7 项目运行 36
1.3.8 导入Eclipse项目 43
1.3.9 导入JAR文件 45
1.3.10 调试 47
1.4 两种开发环境的比较和应用程序转化 55
1.5 本章小结 57
第二章 Android开发基础知识 58
2.1 总体流程 58
2.2 各阶段描述 58
2.3 Android开发代码规范 60
2.3.1 项目和包命名规范 60
2.3.2 类和接口命名方法 60
2.3.3 变量和常量命名方法 61
2.3.4 方法的命名方法 61
2.3.5 注释规范 61
2.4 本章小结 63
第三章 应用程序用户接口——界面设计 63
3.1 用户界面设计基础 64
3.2 界面最外层设计——布局 66
3.2.1 简单布局——常用布局 66
3.2.2 百分比布局 72
3.2.3 复杂布局——布局嵌套 74
3.2.4 Android新布局ConstraintLayout 79
3.3 布局内部构成——界面控件 82
3.4 界面设计助手——辅助设计工具 85
3.5 Android新控件 86
3.6 界面背后的劳动者——Activity 89
3.6.1 Activity简介 89
3.6.2 创建Activity和加载布局 90
3.6.3 Activity的生命周期 92
3.6.4 使用Intent在Activity之间穿梭 93
3.6.5 Intent调用常见系统组件 95
3.7 界面设计新体验——Material Design 97
3.7.1 什么是Material Design 97
3.7.2 Material Design内容 98
3.8 实例:WebView实现监控界面 98
3.9 本章小结 102
第四章 应用程序的构成部件 103
4.1 应用程序架构介绍 103
4.2 应用程序并行机制——线程和线程池 105
4.2.1 线程的实现方法 105
4.2.2 Android的线程池 106
4.3 应用程序互动机制——事件机制 109
4.3.1 事件处理机制1——基于监听器的事件处理 109
4.3.2 事件处理机制2——基于回调的事件处理 110
4.3.3 事件响应的实现 110
4.3.4 实例:获取触点坐标 111
4.4 应用程序后台劳动者——Service 114
4.4.1 服务的创建 114
4.4.2 服务的实现 116
4.4.3 实现Service和Activity之间通信 118
4.5 应用程序的消息处理机制—Handler 122
4.5.1 Handler类 122
4.5.2 实例:获取当前时间 124
4.6 应用程序轻量级并行——AsyncTask机制 126
4.6.1 AsyncTask抽象类 126
4.6.2 实例:实现定时器 127
4.7 AsyncTask和Handler两种异步方式比较 129
4.8 本章小结 130
第五章 界面设计更进一步——UI高级设计 130
5.1 自定义控件 131
5.1.1 自定义View类控件 131
5.1.2 实例:自定义控件——走动的钟表 133
5.2 Android适配器——BaseAdapter 139
5.3 复杂控件ListView——实现场景对象选择 141
5.3.1 ListView控件的简单应用 141
5.3.2 ListView控件的高级应用 141
5.3.3 实例:ListView实现场景对象选择 144
5.4 高级ListView:ExpandableListView——实现商品列表折叠 149
5.4.1 ExpandableAdapter简介 149
5.4.2 实例:ExpandableListView实现商品列表折叠 151
5.5 高级控件Camera2+SurfaceView——实现拍照 158
5.5.1 SurfaceView简介 158
5.5.2 实例:Camera2+SurfaceView——实现拍照 159
5.6 艺术般的控件:RecyclerView和CardView——实现新闻卡片 166
5.6.1 RecyclerView和CardView简介 166
5.6.2 实例:RecyclerView和CardView——实现新闻卡片 167
5.7 Android 7.0新工具类:DiffUtil 172
5.8 更炫的控件:DrawerLayout——实现侧滑菜单效果 175
5.9 对话框 182
5.9.1 常用对话框 182
5.9.2 MDDialog 184
5.10 本章小结 187
第六章 数据持久化方案 188
6.1 轻量级存储:SharedPreferences——实现“记住密码”功能 188
6.2 结构化数据存储——SQLite 193
6.2.1 SQLite简介 193
6.2.2 创建SQLite数据库 194
6.2.3 操作数据库 196
6.3 实例:SQLite——实现会员功能 198
6.4 数据共享:ContentProvider——获得联系人信息 206
6.5 最新对象数据库操作——LitePal 208
6.5.1 LitePal简介 208
6.5.2 配置LitePal 209
6.5.3 数据库创建和升级 210
6.5.4 数据库操作 214
6.5.5 LitePal 1.5.0的新特性 218
6.6 本章小结 220
第七章 让界面动起来——Android动画 220
7.1 绘图动画——绘制仪表盘 221
7.2 帧动画Drawable——模拟电扇转动 226
7.3 SurfaceView实现下雨的天气动画效果 229
7.4 Android 5.0新动画——AnimatedVector-Drawable矢量动画 234
7.5 三维动画:Open GL ES——书本翻页动画 238
7.6 本章小结 249
第八章 更丰富的应用——Android多媒体 249
8.1 视频播放器1——MediaController+VideoView播放视频 250
8.2 视频播放器2——MediaPlayer+SurfaceView播放视频 253
8.3 实现按住说话录音 258
8.4 实现二维码识别 267
8.5 Android TTS文字识别——实现文字朗读 274
8.5.1 Text-To-Speech开发流程 275
8.5.2 Text-To-Speech实现文字朗读 276
8.6 Android语音识别——多种语言语音识别 278
8.7 基于Ijkplayer的视频播放器 282
8.8 本章小结 287
第九章 连接到远方——Android网络开发 287
9.1 Android应用程序的权限 288
9.1.1 Android权限机制详解 288
9.1.2 Android 6.0网络权限管理 291
9.2 解析JSON格式数据 295
9.2.1 使用JSONObject 296
9.2.2 使用GSON 297
9.3 使用OkHttp3请求天气预报 300
9.4 使用Universal-Image-Loader加载图片 305
9.5 使用Volley加载网络图片 309
9.5.1 使用ImageRequest对象加载图片 310
9.5.2 使用ImageLoader对象加载图片 311
9.6 使用xUtils实现网络文件下载 313
9.7 本章小结 316
第十章 更方便的通信——Android无线通信 316
10.1 Android Wifi应用——获取Wifi列表 317
10.2 Android蓝牙——查找蓝牙设备 320
10.2.1 Android蓝牙开发步骤 322
10.2.2 Android查找蓝牙设备 324
10.3 实例:蓝牙控制智能小车 327
10.4 AndroidNFC——通过NFC读取MifareClassic卡信息 341
10.5 本章小结 348
第十一章 Android的开源库和开源项目 348
11.1 Android的开源库 349
11.1.1 Android View Animations 349
11.1.2 图表库 350
11.1.3 CameraFilter 355
11.1.4 Lottie 355
11.1.5 StyleableToast 357
11.1.6 CameraFragment 358
11.2 Android开源项目 360
11.2.1 Easy Sound Recorder 360
11.2.2 MLManager 361
11.2.3 Timber 362
11.2.4 OmniNotes 362
11.2.5 Super Clean Master 363
11.2.6 Pedometer 363
11.2.7 Traval Mate 364
11.2.8 Music-Player 364
11.2.9 PLDroidPlayer 365
11.3 Android开源网站 367
11.4 本章小结 369
第十二章 Android应用程序托管和发布 369
12.1 Git版本控制工具 370
12.1.1 安装Git 371
12.1.2 创建代码仓库 372
12.1.3 提交本地代码 374
12.2 GitHub 374
12.2.1 在GitHub中注册创建版本库 375
12.2.2 将代码托管到GitHub 378
12.3 将应用程序发布到360应用商店 381
12.3.1 生成正式签名的APK文件 381
12.3.2 申请360开发账号 383
12.3.3 发布应用程序 385
12.3.4 嵌入广告 387
12.4 本章小结 397