第1章 搭建Android开发环境 1
1.1 Windows系统安装Android系统要求 2
1.2 安装Android Studio和SDK 3
1.3 配置Android Studio 4
1.4 安装ndk-bundle,Cmake和LLDB 5
1.5 Android Studio常用插件的安装 5
1.6 Android Studio界面介绍 6
1.6.1 主菜单栏 6
1.6.2 ToolBar工具栏 6
1.6.3 Navigation Bar导航栏 7
1.6.4 Status Bar状态栏 7
1.6.5 Tool Button 7
1.6.6 上下文菜单Context Menus 9
1.6.7 设置Auto Import自动导入包 9
1.7 本章主要参考文献 9
第2章 Android清单文件 10
2.1 AndroidManifest.xml文件结构 10
2.2 元素 11
2.3 声明类名 12
2.4 多个值 13
2.4.1 资源值 13
2.5 theme属性 15
2.6 权限 15
2.6.1 permission元素 15
2.6.2 permission属性 17
2.6.3 uses-permission元素 18
2.6.4 动态权限请求的实现步骤 18
2.7 使用uses-feature元素声明应用要求 20
2.8 intent-filter 21
2.8.1 action元素 22
2.8.2 category元素 22
2.8.3 data元素 23
2.9 uses-library元素 25
2.10 本章主要参考文献 25
第3章 Android resource介绍 26
3.1 提供资源 26
3.2 访问资源 32
3.2.1 在代码中访问资源 32
3.2.2 在XML中访问资源 32
3.2.3 访问系统资源 33
3.2.4 引用style属性 34
3.3 字符串资源与其他简单值 35
3.3.1 关于字符串的值 38
3.3.2 设置字符串的格式 38
3.4 菜单资源 39
3.4.1 item元素 40
3.4.2 group元素 41
3.5 颜色状态列表资源ColorStateList 42
3.6 Drawable资源 44
3.6.1 ShapeDrawable 44
3.6.2 StateListDrawable 47
3.6.3 LayerDrawable 48
3.7 本章主要参考文献 51
第4章 Gradle的Android插件 52
4.1 Project接口介绍 55
4.2 Gradle Android插件 56
4.4 setting.gradle解析 57
4.4 Android项目根目录里的build.gradle 57
4.5 Android模块内的build.gradle 58
4.5.1 依赖配置 59
4.6 配置build环境 61
4.6.1 环境变量 61
4.6.2 Gradle属性 62
4.6.3 系统属性 62
4.6.4 工程属性 63
4.6.5 Ext(ra)Properties 63
4.6.6 一个属性设置的实例 64
4.7 本章主要参考文献 65
第5章 Activity与Fragment 66
5.1 启动Activity 67
5.2 在application元素中声明组件 68
5.3 使用intent-filter声明组件功能 70
5.4 Activity生命周期 70
5.5 创建Activity 73
5.5.1 保存Activity状态 74
5.5.2 处理配置变更 75
5.6 Android结构组件 76
5.7 任务和回退栈 79
5.7.1 taskAffinity 80
5.7.2 管理任务 81
5.8 启动应用 85
5.9 Fragment 86
5.9.1 Fragment生命周期 87
5.9.2 添加Fragment到Activity 90
5.9.3 管理Fragment 92
5.9.4 与Activity通信 93
5.10 Context 94
5.11 正则表达式 95
5.12 Activity的生命周期实验 97
5.13 Activity的launchMode实验 108
5.13.1 launchMode为standard实验 108
5.13.2 launchMode为singleTop实验 114
5.13.3 launchMode为singleTask实验 115
5.13.4 Intent标志为FLAG_ACTIVITY_NEW_TASK实验 119
5.13.5 launchMode为singleInstance实验 121
5.13.6 不同的App中相同的taskAffinity的singleTask模式实验 123
5.13.7 allowTaskReparenting=″true″实验 127
5.14 Fragment实验 128
5.15 本章主要参考文献 135
第6章 Intent和IntentFilter 136
6.1 Intent对象的主要信息 136
6.2 Intent传递对象的两种方法 138
6.3 显式Intent和隐式Intent 139
6.4 接收隐式Intent 140
6.4.1 Action测试 141
6.4.2 category测试 142
6.4.3 data测试 143
6.5 隐式Intent示例 147
6.6 强制使用应用选择器 148
6.7 本章主要参考文献 148
第7章 线性、表格、栅格、相对布局与帧布局 149
7.1 LinearLayout 149
7.1.1 LinearLayout.LayoutParams 155
7.1.2 ViewGroup.LayoutParams 158
7.1.3 ViewGroup.MarginLayoutParams 158
7.1.4 layout_margin和padding的区别 159
7.1.5 视图的大小 159
7.1.6 从右到左的布局 159
7.1.7 尺寸单位 160
7.2 TableLayout 161
7.3 GridLayout 164
7.4 相对布局(RelativeLayout) 172
7.5 FrameLayout 175
7.6 CardView 176
7.7 SeekBar 177
7.8 AddStatesFromChildren实验 178
7.9 实验:CardView及SeekBar的使用 181
7.10 本章主要参考文献 184
第8章 ConstraintLayout 185
8.1 单条边约束(相对定位) 185
8.2 不可能约束 189
8.3 视图的尺寸 192
8.4 Guideline 195
8.5 链条 196
8.5.1 CHAIN_SPREAD链模式 197
8.5.2 CHAIN_SPREAD_INSIDE链模式 199
8.5.3 CHAIN_PACKED链模式 200
8.6 圆形定位 203
8.7 本章主要参考文献 204
第9章 Text View 205
9.1 EditText 209
9.2 Button 210
9.3 width与layout_width的关系 211
9.4 本章主要参考文献 217
第10章 Android的双向数据绑定 218
10.1 可观察的数据对象 219
10.2 XML布局文件 222
10.2.1 variable元素 223
10.2.2 import元素 225
10.2.3 include元素 226
10.2.4 属性的取值 227
10.2.5 表达式语言 227
10.2.6 属性的绑定 228
10.2.7 Java类型签名和方法签名 230
10.2.8 处理事件 230
10.3 在Java代码中使用数据绑定 233
10.4 数据双向绑定实验 237
10.5 本章主要参考文献 244
第11章 滚动与翻页 245
11.1 Android触摸事件的消息传递机制 246
11.2 嵌套滚动 251
11.3 RecyclerView 254
11.4 CoordinatorLayout 259
11.4.1 设置为子视图的Behavior 261
11.4.2 实现自定义Behavior 262
11.5 材料设计中的AppBar 263
11.5.1 在布局文件中使用AppBarLayout 263
11.5.2 ToolBar 264
11.6 NestedScrollView 270
11.7 侧滑抽屉 270
11.7.1 侧边菜单的显示与隐藏 272
11.7.2 NavitationView 272
11.8 水平翻页 273
11.9 实验:一个View跟着另一个View移动 278
11.10 实验:ToolBar当ActionBar使用 284
11.11 实验:一个NestedScrollView跟随另一个垂直滚动 293
11.12 实验:RecyclerView实验 297
11.13 侧滑菜单实验 307
11.14 实验:水平翻页 313
11.15 本章主要参考文献 322
第12章 BroadcastReceiver 323
12.1 广播类型 324
12.2 LocalBroadcastManager 325
12.3 BroadcastReceiver在清单文件中的语法 326
12.4 广播接收器的生命周期 327
12.5 广播从发送到接收的方法调用过程 327
12.6 BroadcastReceiver实验 328
12.7 本章主要参考文献 336
第13章 Handler与Service 337
13.1 Handler 337
13.1.1 Message 340
13.1.2 Thread 340
13.1.3 HandlerThread 342
13.2 Service 342
13.2.1 Service在AndroidManifest.xml中的语法 343
13.2.2 Service的两种工作方式 344
13.2.3 Service的生命周期 345
13.2.4 创建绑定的Service 349
13.2.5 绑定到Service 358
13.3 PendingIntent与TaskStackBuilder 359
13.4 Notification 361
13.4.1 管理通知 364
13.4.2 从通知中启动Activity时保留导航 365
13.5 Handler实验 367
13.6 Notification实验 378
13.7 Service开始和绑定实验 384
13.8 本章主要参考文献 412
第14章 数据存储 413
14.1 Shared Preferences 413
14.2 使用内部存储 414
14.3 使用外部存储 416
14.3.1 保存应用私有文件到外部存储 417
14.3.2 保存可与其他应用共享的文件 417
14.3.3 使用作用域目录访问 418
14.3.4 访问可移动介质上的目录 419
14.4 SQLite数据库 420
14.4.1 SQLite存储类型 421
14.4.2 SQLite运算符 421
14.4.3 SQLite语句语法 422
14.5 Android系统中的SQLiteDatabase 431
14.6 Room持久库 435
14.6.1 entity class 435
14.6.2 DAO interface 438
14.6.3 Database抽象类 440
14.6.4 类型转换 443
14.7 SharedPreference实验 444
14.8 SQLite实验 448
14.9 LiveData与Room实验 452
14.10 本章主要参考文献 479
第15章 ContentProvider 481
15.1 设计数据的原始存储方式 481
15.2 设计Content URI 482
15.3 实现ContentProvider类 484
15.4 在清单文件中注册ContentProvider 486
15.4.1 实现ContentProvider的权限 488
15.4.2 临时权限 488
15.5 FileProvider 489
15.6 ContentProvider实验 492
15.7 本章主要参考文献 502
第16章 访问互联网 503
16.1 httpURLConnection 507
16.2 Android系统中JSON数据的解析 509
16.2.1 org.json基本用法 511
16.2.2 Google Gson基本用法 512
16.3 XML文件解析 513
16.3.1 面向文档的对象式解析 515
16.3.2 面向事件的流式解析 516
16.3.3 XMLPullParser类 518
16.4 httpURLConnection实验 522
16.5 Json解析实验 528
16.6 XML解析实验 538
16.7 本章主要参考文献 550