描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787512429796
现在,作者将自己的这么多年的新的体会、技术积累编写成《高性能Android开发技术》一书,与大家分享,本书所介绍的高级开发技术,是从软件工业强度出发,面向软件生产环节,甄选出 Android多种关键和高效的技术,可直接快速投放到企业级、产品级项目的高级开发技术中,覆盖了完整开发一个 AndroidApp应用涉及的各个层面、各个环节。
NDK 开发技术;Android传感器。本书在技术点编排上循序渐进,侧重培养在实际项目开发中的动手能力;精心选取的关键程序代码,由浅入深地帮助读者快速、直观地深入到代码层面理解和掌握Android高级开发技术。
本书适合Android初学者和需要在Android开发技术方面进阶的中级开发者使用。
1.1 ShapeDrawable、PaintDrawable与
OvalShape、RectShape、ArcShape ………………… 1
1.2 GradientDrawable梯度渐变 ……………………………………………………… 3
1.3 过渡动画的 TransitionDrawable …………………………………………………… 9
1.4 圆形圆角图像 …………………………………………………………………… 10
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.5 xml配置放射状梯度渐变 ………………………………………………………… 31
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.7 小 结 …………………………………………………………………………… 50
第4章
View高级特性 ……………………………………………………………… 51
4.1 横竖屏切换不同尺寸的 View …………………………………………………… 51
4.2 onMeasure控制 View 的大小尺寸 ………………………………………………… 54
4.3 onLayout控制子 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章 桌面部件
AppWidget……………………………………………………… 78
6.1 桌面部件 AppWidget的简单实现 ………………………………………………… 78
6.2 桌面部件 AppWidget的定制开发 ………………………………………………… 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.6 小 结 ………………………………………………………………………… 110
第8章 图片加载利器
Glide ……………………………………………………… 112
8.1 Glide最简单的网络图片加载方式 ……………………………………………… 112
8.2 Glide加载gif动态图 …………………………………………………………… 113
8.3 Glide占位图placeholder………………………………………………………… 114
8.4 Glide加载图片的特殊效果 ……………………………………………………… 115
8.5 Glide内存缓存和硬盘缓存 ……………………………………………………… 121
8.6 小 结 ………………………………………………………………………… 123
第9章 高阶Java多线程在
Android中的运用 ………………………………… 124
9.1 多线程技术概述 ………………………………………………………………… 125
9.2 Java线程池 ThreadPoolExecutor………………………………………………… 126
9.3 Java线程池的调度ScheduledThreadPoolExecutor ……………………………… 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 DownloadManager下载进度、存放目录等 ……………………………………… 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.5 小 结 ………………………………………………………………………… 165
第12章 进程间通信之
AIDL机制 ……………………………………………… 166
12.1 进程间通信概述 ……………………………………………………………… 166
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.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.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 PairedBluetoothDevices:蓝牙设备配对 ………………………………………… 241
16.3 蓝牙设备连接的建立…………………………………………………………… 243
16.4 蓝牙设备之间的数据传输 ……………………………………………………… 247
16.5 手机端通过蓝牙发送文件到电脑端 …………………………………………… 252
16.6 小 结 ………………………………………………………………………… 260
第17章
RxJava/RxAndroid脉络清晰的响应式编程 …………………………… 261
17.1 RxJava/RxAndroid技术概论 …………………………………………………… 261
17.2 intervalRange与interval间隔、周期性地发射数据流 …………………………… 264
17.3 map和flatMap操作符 ………………………………………………………… 266
17.4 zip、merge和concat操作符 …………………………………………………… 269
17.5 scan和filter操作符 …………………………………………………………… 272
17.6 take、skip和takeLast操作符 …………………………………………………… 275
17.7 ofType根据类型选择输出结果 ………………………………………………… 277
17.8 distinct与distinctUntilChanged操作符 ………………………………………… 279
17.9 doAfterNext和doOnNext接力链式操作 ……………………………………… 280
17.10 buffer缓冲操作符 …………………………………………………………… 282
17.11 retry错误重试 ……………………………………………………………… 285
17.12 小 结 ……………………………………………………………………… 288
第18章
AndroidDataBinding:MVVM 架构基石,数据驱动 App运转 ……… 289
18.1 AndroidDataBinding概述 ……………………………………………………… 289
18.2 初识 AndroidDataBinding……………………………………………………… 291
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 AndroidDataBinding技术在传统ListView中的运用………………………………… 315
18.12 AndroidDataBinding技术在 RecyclerView中的运用 ……………………………… 317
18.13 AndroidDataBinding的 Lambda表达式 ……………………………………… 318
18.14 小 结 ……………………………………………………………………… 320
第19章
AndroidNDK 开发技术 ………………………………………………… 321
19.1 JavaJNI技术简介……………………………………………………………… 321
19.2 AndroidNDK 开发环境配置 …………………………………………………… 323
19.3 AndroidStudio自动生成的 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
CSDN 博客上写技术文章。
还在读本科的时候,我就喜欢阅读
CSDN 出版的IT 技术杂志《程序员》。后来我进入工业界开始从事 Android开发工作,在实际工作中遇到过很多技术难题,很多时候又都是从 CSDN 的技术博客上找到了答案。Android技术博大精深,体系庞大繁杂,一个 Android技术难点往往需要花费半天、一天甚至更长时间才能研究清楚,然而事后一年半载,又遗忘得干干净净。好记性不如烂笔头! 吸取了这些经验和教训,我开始有意识地把自己对 Android技术探索和发现的成果性内容整理成文章,发表在 CSDN 博客上。当时这么做主要出于三方面的考虑:
第一,知识点方便备查。在工作或学习中,如果遇到某一领域之前做过的内容,只要想起其中一个或几个关键词,就能快速搜索、定位到之前围绕这些技术写的文章,朝花夕拾,进而找回记忆。
第二,现在的
Android技术内容交织,不断向纵深发展,需要丰富的配图和示例代码加以说明才能弄明白,在这种情况下若还用笔和纸记录显然很不方便。而在博客这种形式下,要想引用文章,则直接插入一个url网址链接就可以,配图、插入程序代码更不在话下。
第三,Android技术体系复杂,内容越来越庞杂,有了之前写好的博客文章,至少可以从中找到线索,找回当时研究的思路和方法,快速搞清楚问题的关键。这样无疑大大提升了学习和工作效率。
我就这样日复一日、年复一年坚持写博客文章,不知不觉中养成了写博客的习惯,几天不写就感觉生活中缺了点什么。于是博客文章越写越多,此时我发现自己博客的阅读量不断攀升,50万、100万、200万! 这个过程中读者数量也不断增多,可以说一天一个样,一天一个数据报表!如果说开始写博客文章的初心是记录自己的研究心得,沉淀自己的技术积累,然而当我的博客文章阅读量和读者群体达到一定规模并越来越多的时候,写博客文章就成为了一种乐趣。在这种乐趣的驱动下,每当攻克一个技术难题,脑海中第一反应就是有必要整理一下,写成简单易懂的博客文章分享给大家。
在博客写作的过程中,我受到了大量的支持和鼓励,这又促使我写出更多、更好的博客文章,以不辜负大家的期待。同时,博客写作丰富了自己的人生,也带来了与之相关的机会。
本书内容
本书所介绍的高级开发技术,是从软件工业强度出发,面向软件生产环节,甄选出 Android多种关键和高效的技术,可直接快速投放到企业级、产品级项目的高级开发技术中,覆盖了完整开发一个 AndroidApp应用涉及的各个层面、各个环节。
今非昔比,如今的
Android技术及其平台和框架性技术,都已经发生了不小的变化。新的技术框架和编程模型均已有了很大的改变和演进。我应该算是中国比较早跟进 Android技术的开发者之一,看到了 Android技术多年来的积累沉淀以及整个移动端软件开发行业的发展,催生了相当多 Android平台之上的基础和初级开发者。
然而,当开发者面对实际的工业级项目产品开发时,需要解决的开发任务所涉及的问题是极为苛刻的设计要求、复杂的业务逻辑和数据流转处理,若仅仅使用 Android基础开发技术,所耗费的时间和人力成本将会十分巨大。在这种情形下,无论是从技术管理决策层角度,还是站在一线的普通开发者立场,都非常有必要考虑选用快捷、高级的 Android研发技术路线和框架性解决方案。以上所述问题,正是本书所要阐述的技术内容。
本书读者对象
读者须具有一定的 Android和Java程序设计语言基础,但是对这些基础前置知识不必做过多严格要求,本书尽量用相对简单易懂的例子来说明所要介绍的技术点。如果读者已经拥有了基础知识,但不满足于停留在初级开发水平,希望在技术上寻求进阶,那么本书是非常适合的。本书是 Android技术的提高和进阶性质的技术书籍,通过本书,读者可以掌握前沿实用、高效便捷的 Android开发技术,并可以很快地把从本书学到的高级开发技术应用到具体的项目开发实践中。
四川大学的彭舰教授完成了本书的审校工作,四川大学的研究生弋沛玉、汪莹、郭振杰、邓力嘉、钟昌康、曹先波、陈新鹏对本书的审校亦有贡献。本书的顺利完成和出版,离不开北京航空航天大学出版社以及董宜斌编辑的支持和帮助,在此表示衷心的感谢。还要感谢 Android,谢谢 Android为这个世界带来的美好!
本书难免存在不妥之处,如果读者发现任何问题或者有任何疑问,希望和作者交流,我的邮箱是[email protected]。
张 飞
2018年10月
评论
还没有评论。