第1章 Android开发基础 1
1.1 移动智能设备系统发展现状 1
1.2 Android系统基础 2
1.2.1 Android系统的发展现状 2
1.2.2 常见的Android设备 2
1.3 Android系统架构 3
1.3.1 最底层的操作系统层(OS)——C/C++实现 4
1.3.2 Android的硬件抽象层——C/C++实现 4
1.3.3 各种库(Libraries)和Android运行环境(RunTime)——中间层 5
1.3.4 应用程序框架(Application Framework) 6
1.3.5 应用程序(Application)——Java实现 6
1.4 Android和Linux的关系 6
1.4.1 Android继承于Linux 6
1.4.2 Android和Linux内核的区别 7
1.5 Android开发学习路线图 8
1.5.1 Android开发的两大方向 8
1.5.2 Android应用开发需要具备的基础知识 9
第2章 搭建Android开发环境 11
2.1 Android Studio介绍 11
2.2 准备工作 12
2.2.1 系统要求 12
2.2.2 获取并安装JDK 12
2.3 官方方式获取并安装Android Studio 15
2.3.1 官方方式获取工具包 15
2.3.2 安装工具包 17
2.4 非官方方式获取并安装工具包 18
2.4.1 快速下载站点介绍 18
2.4.2 单独获取并安装Android Studio 19
2.4.3 单独获取并安装Android SDK 20
2.5 启动Android Studio 22
2.5.1 启动前的设置工作 22
2.5.2 正式启动 24
2.6 通过官网学习搭建环境 25
第3章 Android Studio集成开发环境介绍 27
3.1 Welcome to Android Studio面板 27
3.2 系统设置面板 28
3.3 系统默认设置面板 29
3.3.1 Appearance&Behavior(外观与行为)面板 30
3.3.2 Keymap(快捷键)面板 32
3.3.3 Editor(编辑器)面板 33
3.4 主界面面板 34
3.4.1 菜单栏 35
3.4.2 工具栏 37
3.4.3 左侧面板 38
3.4.4 中间编辑区域 39
3.4.5 底部调试区域 40
3.4.6 右侧模式面板 42
第4章 Android Studio常见操作 43
4.1 新建一个新工程 43
4.2 Android SDK操作 47
4.2.1 Android SDK管理器操作 48
4.2.2 设定Android SDK Location 49
4.2.3 安装/删除/更新Android SDK 50
4.2.4 集中管理Android SDK 54
4.3 AVD模拟器操作 56
4.3.1 创建新的AVD模拟器 57
4.3.2 启动AVD模拟器 61
4.3.3 修改AVD模拟器 62
4.3.4 删除AVD模拟器 63
4.4 导入/导出操作 64
4.4.1 导入一个既有Android Studio项目 64
4.4.2 导入一个既有Eclipse项目 66
4.5 导入/导出设置 69
4.5.1 Import Settings(导入设置) 69
4.5.2 Export Settings(导出设置) 69
4.6 第一个Android应用程序 70
4.6.1 使用Android Studio新建Android工程 70
4.6.2 编写代码和代码分析 71
4.6.3 调试程序 71
4.6.4 模拟器运行项目 72
4.6.5 真机运行项目 73
第5章 分析Android应用程序文件的组成 76
5.1 两种目录结构概览 76
5.1.1 Project模式 76
5.1.2 Android模式 76
5.2 “app”目录 77
5.2.1 “java”子目录 77
5.2.2 “res”子目录 78
5.2.3 设置文件AndroidManfest.xml 79
5.3 “Gradle Scripts”目录 80
5.3.1 文件build.gradle 81
5.3.2 文件gradle.properties 81
5.3.3 文件settings.gradle 82
第6章 Gradle技术基础 83
6.1 两种目录结构概览 83
6.1.1 安装Gradle 83
6.1.2 Gradle的主要功能 83
6.2 Android工程中的Gradle 84
6.2.1 文件app/build.gradle 84
6.2.2 “gradle”目录 85
6.2.3 根目录中的build.gradle 86
6.2.4 其他文件 86
6.3 和Android Studio相关的几个命令 86
6.4 Android Studio中的常见Gradle操作 87
6.4.1 查看并编译源码 87
6.4.2 创建二进制发布版本 88
6.4.3 Gradle多渠道打包 90
6.4.4 自定义BuildConfig 92
第7章 UI界面布局 93
7.1 View视图组件 93
7.1.1 View的常用属性和方法 93
7.1.2 Viewgroup容器 94
7.1.3 ViewManager类 94
7.2 Android UI布局的方式 94
7.2.1 使用XML布局 95
7.2.2 在Java代码中控制布局 95
7.3 Android布局管理器详解 96
7.3.1 Android布局管理器概述 96
7.3.2 线性布局LinearLayout 98
7.3.3 相对布局RelativeLayout 99
7.3.4 帧布局FrameLayout 101
7.3.5 表格布局TableLayout 101
7.3.6 绝对布局AbsoluteLayout 102
7.3.7 网格布局GridLayout 103
7.3.8 实战演练——演示各种基本布局控件的用法 104
第8章 Material Design设计语言 110
8.1 Material Design概述 110
8.2 Material Design设计原则 111
8.3 环境因素:属性和阴影 111
8.4 动画设计 112
8.4.1 感知动作 112
8.4.2 响应式交互 112
8.5 实战演练——使用Material Design 113
8.5.1 项目概览 113
8.5.2 程序文件 114
8.5.3 布局文件 120
8.5.4 实现测试程序 125
第9章 核心组件介绍 131
9.1 Widget组件 131
9.1.1 创建一个Widget组件 131
9.1.2 使用按钮Button 132
9.1.3 使用文本框TextView 133
9.1.4 使用编辑框EditText 135
9.1.5 使用多项选择控件CheckBox 136
9.1.6 使用单项选择控件RadioGroup 138
9.1.7 使用下拉列表控件Spinner 139
9.1.8 使用自动完成文本控件AutoCompleteTextView 142
9.1.9 使用日期选择器控件DatePicker 143
9.1.10 使用时间选择器TimePicker控件 144
9.1.11 联合应用DatePicker和TimePicker 145
9.1.12 使用滚动视图控件ScrollView 148
9.1.13 使用进度条控件ProgressBar 148
9.1.14 使用拖动条控件SeekBar 149
9.1.15 使用评分组件RatingBar 150
9.1.16 使用图片视图控件ImageView 151
9.1.17 使用切换图片控件ImageSwitcher和Gallery 152
9.1.18 使用网格视图控件GridView 155
9.1.19 使用标签控件Tab 156
9.2 使用MENU友好界面 158
9.2.1 MENU基础 158
9.2.2 实战演练——使用MENU控件 158
9.3 使用列表控件ListView 160
9.4 使用对话框控件 162
9.4.1 对话框基础 162
9.4.2 实战演练——在屏幕中使用对话框显示问候语 163
第10章 Android事件处理 169
10.1 基于监听的事件处理 169
10.1.1 监听处理模型中的3种对象 169
10.1.2 Android系统中的监听事件 171
10.1.3 实现事件监听器的方法 172
10.2 基于回调的事件处理 177
10.2.1 Android事件侦听器的回调方法 177
10.2.2 基于回调的事件传播 179
10.2.3 重写onTouchEvent方法响应触摸屏事件 181
10.3 响应的系统设置的事件 182
10.3.1 Configuration类详解 183
10.3.2 重写onConfigurationChanged响应系统设置更改 185
10.4 Handler消息传递机制 186
第11章 图形图像和动画处理 191
11.1 Android绘图基础 191
11.1.1 使用Canvas画布 191
11.1.2 使用Paint类 193
11.1.3 位图操作类Bitmap 195
11.2 使用其他的绘图类 198
11.2.1 使用设置文本颜色类Color 198
11.2.2 使用矩形类Rect和RectF 199
11.2.3 使用变换处理类Matrix 203
11.2.4 使用BitmapFactory类 205
11.3 使用Drawable实现动画效果 208
11.3.1 Drawable基础 208
11.3.2 使用Drawable实现动画效果 208
11.4 Tween Animation动画详解 209
11.4.1 Tween动画基础 210
11.4.2 Tween动画类详解 213
11.4.3 Tween应用实战 215
11.5 实现Frame Animation动画效果 216
11.5.1 Frame动画基础 216
11.5.2 使用Frame动画 217
11.6 Property Animation动画 218
11.6.1 Property Animation(属性)动画基础 219
11.6.2 使用Property Animation 220
11.7 实现动画效果的其他方法 223
11.7.1 播放GIF动画 223
11.7.2 实现EditText动画特效 225
第12章 开发音频/视频应用程序 227
12.1 音频应用接口类概述 227
12.2 AudioManager类 228
12.2.1 AudioManager基础 228
12.2.2 AudioManager基本应用——设置短信提示铃声 230
12.3 录音处理 233
12.3.1 使用MediaRecorder接口录制音频 233
12.3.2 使用AudioRecord接口录制音频 234
12.4 播放音频 236
12.4.1 使用AudioTrack播放音频 237
12.4.2 使用MediaPlayer播放音频 237
12.4.3 使用SoundPool播放音频 239
12.4.4 使用Ringtone播放铃声 240
12.4.5 使用JetPlayer播放音频 240
12.4.6 使用AudioEffect处理音效 241
12.5 语音识别技术 243
12.5.1 Text-To-Speech技术 243
12.5.2 谷歌的Voice Recognition技术 246
12.6 实现振动功能 248
12.7 设置闹钟 249
12.7.1 AlarmManage基础 249
12.7.2 开发一个闹钟程序 250
12.8 使用MediaPlayer播放视频 254
第13章 GPS地图定位 260
13.1 位置服务 260
13.1.1 类location详解 260
13.1.2 实战演练——在Android设备中实现GPS定位 261
13.2 随时更新位置信息 262
13.2.1 库Maps中的类 262
13.2.2 使用LocationManager监听位置 263
13.2.3 实战演练——监听当前设备的坐标和海拔 264
13.3 在Android设备中使用地图 270
13.3.1 申请Google Map API密钥 270
13.3.2 使用Map API密钥的注意事项 273
13.3.3 使用Map API密钥 274
13.3.4 实战演练——在Android设备中使用谷歌地图实现定位 275
13.4 接近警报 279
13.4.1 类Geocoder基础 279
13.4.2 Geocoder的公共构造器和公共方法 281
第14章 Android传感器应用开发详解 283
14.1 Android传感器系统概述 283
14.2 Android传感器应用开发基础 283
14.2.1 查看包含的传感器 283
14.2.2 模拟器测试工具——SensorSimulator 285
14.2.3 实战演练——检测当前设备支持的传感器 288
14.3 使用光线传感器 290
14.3.1 光线传感器介绍 290
14.3.2 使用光线传感器的方法 291
14.4 使用磁场传感器 291
14.4.1 什么是磁场传感器 292
14.4.2 Android系统中的磁场传感器 292
14.5 使用加速度传感器 292
14.5.1 加速度传感器的分类 293
14.5.2 Android系统中的加速度传感器 293
14.6 使用方向传感器 294
14.6.1 方向传感器基础 294
14.6.2 Android中的方向传感器 295
14.7 使用陀螺仪传感器 295
14.7.1 陀螺仪传感器基础 296
14.7.2 Android中的陀螺仪传感器 296
14.8 使用旋转向量传感器 297
14.9 使用距离传感器详解 298
14.9.1 距离传感器介绍 298
14.9.2 Android系统中的距离传感器 299
14.10 使用气压传感器 300
14.10.1 气压传感器基础 301
14.10.2 气压传感器在智能手机中的应用 301
14.11 使用温度传感器 301
14.11.1 温度传感器介绍 302
14.11.2 Android系统中温度传感器 302
14.12 使用湿度传感器 304
第15章 编写安全的应用程序 306
15.1 Android安全机制概述 306
15.1.1 Android的安全机制模型 307
15.1.2 Android具有的权限 307
15.1.3 Android的组件模型(Component Model) 308
15.1.4 Android安全访问设置 308
15.2 声明不同的权限 309
15.2.1 AndroidManifest.xml文件基础 309
15.2.2 声明获取不同的权限 309
15.2.3 自定义一个权限 313
15.3 发布Android程序生成APK 314
15.3.1 什么是APK文件 314
15.3.2 申请会员 315
15.3.3 生成签名文件 318
15.3.4 使用签名文件 323
15.3.5 发布到市场 325
第16章 Google Now和Android Wear详解 326
16.1 Google Now概述 326
16.1.1 搜索引擎的升级—Google Now 326
16.1.2 Google Now的用法 327
16.2 什么是Android Wear 328
16.3 开发Android Wear程序 329
16.3.1 创建通知 329
16.3.2 创建声音 331
16.3.3 给通知添加页面 333
16.3.4 通知堆 334
16.3.5 通知语法介绍 335
16.4 实战演练——开发一个Android Wear程序 336
第17章 Android应用优化详解 341
17.1 用户体验是产品成功的关键 341
17.1.1 什么是用户体验 341
17.1.2 影响用户体验的因素 342
17.1.3 用户体验设计目标 342
17.2 Android优化概述 343
17.3 UI布局优化 343
17.3.1 <merge/>标签在UI界面中的优化作用 343
17.3.2 遵循Android Layout优化的两段通用代码 346
17.3.3 优化Bitmap图片 347
17.3.4 FrameLayout布局优化 348
17.3.5 使用Android为我们提供的优化工具 352
17.4 Android Lint静态分析 359
17.4.1 使用Android Lint 360
17.4.2 解决错误 361
17.4.3 自定义Android Lint的检查提示 362
17.4.4 检查工程依赖的库 364
17.5 使用Memory Monitor内存分析工具 365
17.6 Code CleanUp(代码清理) 367
17.7 使用第三方工具 368
第18章 Android TV开发详解 369
18.1 Android TV概述 369
18.2 系统模块结构 370
18.3 系统主界面 370
18.3.1 系统主界面布局 371
18.3.2 系统主界面Activity 372
18.4 本地服务 377
18.4.1 本地服务主界面 377
18.4.2 应用程序管理界面 380