第1章 进阶基础 1
1.1 深入剖析Activity的生命周期 1
1.1.1 Activity的生命周期的各种状态 2
1.1.2 实例:准备 4
1.1.3 实例:因硬件导致的生命周期变化 6
1.1.4 实例:页面切换时的生命周期变化 11
1.1.5 实例:由系统原因导致的生命周期变化 16
1.2 深入剖析Activity的启动模式 20
1.2.1 AD B命令 20
1.2.2 标准模式 21
1.2.3 栈顶复用模式 25
1.2.4 栈内复用模式 27
1.2.5 单实例模式 32
1.2.6 startActivity 34
1.3 深入剖析View的工作流程 36
1.3.1 装饰视图和MeasureSpec 38
1.3.2 测量 39
1.3.3 布局 44
1.3.4 绘制 45
1.4 深入剖析View的动画原理 47
1.4.1 默认视图动画 48
1.4.2 自定义视图动画 51
1.4.3 帧动画 54
1.4.4 属性动画 54
1.4.5 列表控件 58
第2章 高阶控件 62
2.1 熟练掌握AppBarLayout的开发技术 62
2.1.1 搭建项目框架 63
2.1.2 页面设置ViewPager布局 67
2.1.3 页面添加AppBarLayout布局 73
2.1.4 页面添加AppBarLayout逻辑 76
2.1.5 页面添加AppBarLayout动画 81
2.2 熟练掌握CoordinatorLayout的开发技术 85
2.2.1 项目框架 86
2.2.2 布局设计 86
2.2.3 联动逻辑 90
2.2.4 图片交互 93
2.3 熟练掌握ConstraintLayout的开发技术 96
2.3.1 工程配置 97
2.3.2 约束布局 99
2.3.3 链式结构 107
第3章 项目架构 110
3.1 顶层设计Android的工程架构 110
3.1.1 MVC架构 111
3.1.2 MVP架构 116
3.1.3 MVVM架构 120
3.2 顶层设计基于Flux的流式架构 124
3.2.1 视图 125
3.2.2 行为创建器 129
3.2.3 调度器 130
3.2.4 存储器 133
第4章 响应式编程 140
4.1 全面解析响应式库RxJava的使用方式 140
4.1.1 项目框架 141
4.1.2 链式表达式 143
4.1.3 流的加工函数 147
4.1.4 Ambda表达式 150
4.1.5 网络请求 151
4.1.6 控件的异步事件 158
4.1.7 线程安全 160
4.2 全面解析依赖注入库Dagger的使用方式 163
4.2.1 工程配置 164
4.2.2 主页逻辑 165
4.2.3 详情逻辑 168
4.3 基于响应式编程的网络数据同步及缓存框架 172
4.3.1 工程配置 173
4.3.2 首页 174
4.3.3 数据源 176
4.3.4 依赖注入 178
4.3.5 无缓存模式 180
4.3.6 缓存模式 182
第5章 炫酷功能 185
5.1 设计与实现朋友圈视频的滚动播放功能 185
5.1.1 项目框架 186
5.1.2 视频列表 188
5.1.3 视频项的适配器 192
5.1.4 视频列表项 195
5.2 设计与实现基于DialogFragment的底部弹窗布局 199
5.2.1 首页逻辑 200
5.2.2 弹窗样式 201
5.2.3 弹窗逻辑 203
第6章 精美动画 207
6.1 实现页面切换中元素分享的动画效果 207
6.1.1 项目框架 207
6.1.2 效果显示动画 209
6.1.3 预留位置动画 213
6.2 实现页面展开中圆形爆炸的动画效果 219
6.2.1 首页逻辑 220
6.2.2 新页逻辑 222
6.2.3 显示动画 225
6.2.4 退出动画 228
第7章 Kotlin与SVG 230
7.1 Kotlin基础教程 230
7.1.1 基础部分 231
7.1.2 进阶部分 236
7.2 SVG基础教程 240
7.2.1 Vector图像 241
7.2.2 Vector动画 244
7.2.3 第三方Sharp库 248
第8章 测试与优化 253
8.1 基于Espresso和Dagger的自动化测试框架 253
8.1.1 工程配置 254
8.1.2 业务逻辑 256
8.1.3 功能测试 264
8.2 优化内存泄漏与电量消耗的技术框架 271
8.2.1 内存泄漏 271
8.2.2 电量优化 281