第1章 高级图形图像处理 1
1.1 ShapeDrawable、PaintDrawable与OvalShape、RectShape、ArcShape 1
1.2 GradientDrawable梯度渐变 3
1.2.1 线性渐变 4
1.2.2 圆环形渐变 6
1.2.3 矩形渐变 7
1.2.4 复杂渐变线 8
1.3 过渡动画的TransitionDrawable 9
1.4 圆形圆角图像 10
1.4.1 RoundedBitmapDrawable:谷歌官方的圆角方案 10
1.4.2 圆形圆角的第三方开源实现 12
1.5 ImageView的setImageLevel和level-list 13
1.6 红色小圆球样式的新消息提醒 14
1.7 小结 18
第2章 图形图像渲染的梯度渐变 20
2.1 线性梯度渐变渲染器LinearGradient 20
2.2 扫描梯度渐变渲染器SweepGradient 23
2.3 放射环状梯度渐变渲染器RadialGradient 25
2.4 xml配置线性梯度渐变 26
2.4.1 线性梯度渐变的角度方向 26
2.4.2 椭圆形的线性渐变 29
2.4.3 梯度渐变的开始、中间、结束颜色 30
2.5 xml配置放射状梯度渐变 31
2.5.1 gradientRadius 31
2.5.2 centerX与centerY 32
2.6 xml配置扫描形梯度渐变 34
2.7 小结 35
第3章 由静至动的动态拖曳View及动画 36
3.1 alpha:透明渐变属性动画 36
3.2 rotation:旋转属性动画 37
3.3 translation:位移属性动画 38
3.4 scale:缩放属性动画 39
3.5 AnimatorSet:属性动画集 40
3.6 ViewDragHelper:拖曳管控 42
3.6.1 ViewDragHelper初识 43
3.6.2 ViewDragHelper拖曳管控以及水平方向的边界约束 46
3.6.3 ViewDragHelper控制子View垂直方向拖曳边界约束 49
3.7 小结 50
第4章 View高级特性 51
4.1 横竖屏切换不同尺寸的View 51
4.2 onMeasure控制View的尺寸大小 54
4.3 onL.ayout控制子View的空间位置 59
4.4 小结 63
第5章 高级组件开发 65
5.1 Android设备消息通知 65
5.2 状态栏的通知消息点击触发事件启动后台的Activity 68
5.3 消息通知的自定义布局 69
5.4 WindowManager悬浮窗 70
5.5 白天/夜间模式标准实现 72
5.6 小结 77
第6章 桌面部件App Widget 78
6.1 桌面部件App Widget的简单实现 78
6.2 桌面部件App Widget的定制开发 84
6.3 简单音乐播放器的桌面部件Widget 89
6.4 小结 95
第7章 OkHttp一揽子网络技术解决方案 96
7.1 OkHttp异步方式下载 96
7.2 OkHttp同步方式加载数据 100
7.3 OKHttp的post上传 101
7.4 OkHttp的基本配置 104
7.4.1 OkHttp超时设置 104
7.4.2 OkHttp配置缓存策略 105
7.5 OkHttp的http网络请求头部header 107
7.6 小结 110
第8章 图片加载利器Glide 112
8.1 Glide最简单的网络图片加载方式 112
8.2 Glide加载gif动态图 113
8.3 Glide占位图placeholder 114
8.4 Glide加载图片的特殊效果 115
8.4.1 Glide淡入动画 115
8.4.2 Glide实现图片多种缩放裁剪效果 115
8.5 Glide内存缓存和硬盘缓存 121
8.6 小结 123
第9章 高阶Java多线程在Android中的运用 124
9.1 多线程技术概述 125
9.2 Java线程池ThreadPoolExecutor 126
9.3 Java线程池的调度Sched uledThreadPool Executor 129
9.4 Future、Callable类获得线程返回结果 131
9.5 FutureTask线程类详解 134
9.6 Java线程安全的LinkedBlockingQueue类和ConcurrentLinkedQueue类 136
9.7 小结 139
第10章 大数据、多任务、断点续传下载管理 140
10.1 DownloadManager开发简介 140
10.2 DownloadManager下载状态查询 145
10.3 Download Manager下载进度、存放目录等 147
10.4 DownloadManager下载完成事件监听 148
10.5 小结 150
第11章 内存与物理存储高效缓存及策略 152
11.1 引入LruCache内存缓存技术的背景 152
11.2 内存LruCache缓存及算法的策略思想 153
11.3 二级缓存LruCache和DiskLruCache 159
11.4 DiskLruCache缓存读写操作具体过程 162
11.4.1 获取DiskLruCache实例 162
11.4.2 DiskLruCache缓存写操作 163
11.4.3 DiskLruCache缓存读操作 164
11.5 小结 165
第12章 进程间通信之AIDL机制 166
12.1 进程间通信概述 166
12.1.1 管道 166
12.1.2 命名管道 167
12.1.3 信号 168
12.1.4 消息队列 168
12.1.5 共享内存 169
12.1.6 内存映射 169
12.1.7 信号量 169
12.1.8 套接字 170
12.2 进程间通信 170
12.2.1 进程间通信AIDL之服务器端 171
12.2.2 进程间通信AIDL之客户端 173
12.3 进程间通信AIDL之双向通信 175
12.4 小结 179
第13章 框架性架构体系 180
13.1 EventBus:灵活轻便的跨域消息通信 180
13.2 Lifecycle:从生命周期中解放出来 184
13.3 Android运行时权限 187
13.3.1 Android运行时权限常规开发 187
13.3.2 批量权限的运行时申请 189
13.3.3 易用的运行时权限申请开源框架 191
13.4 小结 192
第14章 企业级开发ORM数据库技术 194
14.1 ORMLite数据库环境搭建 194
14.2 ORMLite数据库应用开发 195
14.3 ORMLite的外键关联映射 200
14.4 Android平台上的greenDAO关系数据库 205
14.5 greenDAO关系映射模型 213
14.5.1 一对一的映射关联 213
14.5.2 一对多的映射关联 215
14.6 小结 218
第15章 多媒体与图像识别扫描技术 219
15.1 Android二维码/条形码技术方案综述 219
15.2 Android二维码/条形码技术开发实践 220
15.3 SurfaceView简介与实例 223
15.4 TextureView与SurfaceTexture实现相机拍照 226
15.5 TextureView与MediaPlayer实现视频播放 231
15.6 小结 233
第16章 蓝牙网络通信技术 235
16.1 发现蓝牙设备 236
16.2 Paired Bluetooth Devices:蓝牙设备配对 241
16.3 蓝牙设备连接的建立 243
16.3.1 Android蓝牙设备的服务器端 243
16.3.2 Android蓝牙客户端 245
16.3.3 蓝牙设备服务器端与客户端连接 247
16.4 蓝牙设备之间的数据传输 247
16.5 手机端通过蓝牙发送文件到电脑端 252
16.6 小结 260
第17章 RxJava/RxAndroid脉络清晰的响应式编程 261
17.1 RxJava/RxAndroid技术概论 261
17.1.1 subscribeOn:规定任务执行的线程 262
17.1.2 observeOn:配置被观察者发射的事件或数据流导出的线程类型 262
17.2 intervalRange与interval周期性地发射数据流 264
17.2.1 intervalRange操作符 265
17.2.2 interval操作符 265
17.3 map和flatMap操作符 266
17.3.1 map操作符 267
17.3.2 flatMap操作符 268
17.4 zip、merge和concat操作符 269
17.4.1 zip操作符 270
17.4.2 merge操作符 271
17.4.3 concat操作符 272
17.5 scan和filter操作符 272
17.5.1 scan操作符进行扫描 272
17.5.2 filter操作符过滤筛查 274
17.6 take、skip和takeLast操作符 275
17.6.1 take操作符 275
17.6.2 skip操作符 276
17.6.3 takeLast操作符 276
17.7 ofType根据类型选择输出结果 277
17.8 distinct与distinct UntilChanged操作符 279
17.8.1 distinct操作符 279
17.8.2 distinct UntilChanged操作符 279
17.9 doAfterNext和doOnNext接力链式操作 280
17.10 buffer缓冲操作符 282
17.10.1 分组缓冲发射数据的个数 282
17.10.2 分组缓冲发射数据的时间 284
17.11 retry错误重试 285
17.12 小结 288
第18章 Android DataBinding:MVVM架构基石,数据驱动App运转 289
18.1 Android DataBinding概述 289
18.2 初识Android DataBinding 291
18.2.1 Android Studio中配置DataBinding 291
18.2.2 建立ViewModel模型 292
18.2.3 ViewModel和View的绑定 293
18.2.4 代码连接 294
18.3 notifyPropertyChanged:动态更新数据 295
18.4 @=操作符双向绑定 298
18.5 数据绑定的BindingAdapter适配器 299
18.6 BindingMethods可实现BindingAdapter功能 301
18.7 基于InverseBindingAdapter实现双向绑定之反向绑定 302
18.8 基于InverseBindingMethods实现双向绑定之反向绑定 308
18.9 基于BindingAdapter与InverseBindingAdapter实现SeekBar双向绑定 310
18.10 基于InverseBindingMethods实现SeekBar双向绑定 313
18.11 Android DataBinding技术在传统ListView中的运用 315
18.12 Android DataBinding技术在RecyclerView中的运用 317
18.13 Android DataBinding的Lambda表达式 318
18.14 小结 320
第19章 Android NDK开发技术 321
19.1 Java JNI技术简介 321
19.2 Android NDK开发环境配置 323
19.3 Android Studio自动生成的NDK工程代码结构分析 325
19.4 自定义实现Android的NDK库 328
19.5 小结 332
第20章 Android传感器 333
20.1 Android传感器开发概述 334
20.2 Android线性加速度传感器 335
20.3 Android近距离传感器 338
20.4 Android压力传感器 340
20.5 Android光强传感器 341
20.6 Android方位传感器 342
20.7 Android运动计步传感器 345
20.8 小结 346
参考文献 348