描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121342981
产品特色
编辑推荐
√ 本书实例都来自对在日常开发中遇到的问题的抽象,涉及整个Android开发的各个技术栈。
√ 从常见的问题入手,引导读者逐步地掌握进阶的各个实例,同时提供分析和解决问题的思考过程,寻求*方案。
√ 内容涉及Activity和View、高阶控件、项目架构、响应式编程、功能与动画、Kotlin与SVG、测试与优化等。
√ 从常见的问题入手,引导读者逐步地掌握进阶的各个实例,同时提供分析和解决问题的思考过程,寻求*方案。
√ 内容涉及Activity和View、高阶控件、项目架构、响应式编程、功能与动画、Kotlin与SVG、测试与优化等。
内容简介
本书收集了约20个关于高级Android开发的进阶实例,这些实例都是对在日常开发中遇到的问题的抽象,涉及整个Android开发的各个技术栈。本书从常见的问题入手,引导读者逐步地掌握进阶的各个实例,同时提供分析和解决问题的思考过程,寻求*方案。本书的内容分为以下几个部分。进阶基础:通过管中窥豹,剖析Activity和View的一些基本概念,展示源码分析的常见方法;高阶控件:讲解MD的两个复合布局和约束布局,介绍高级控件的开发流程;项目架构:架构是项目的骨骼,该部分介绍主流的MVP系列和Flux架构;响应式编程:解析响应式编程三剑客RxJava Dagger Retrofit的不同特性组合使用方法;功能与动画:列举若干实际开发中的经典实例,包含功能定制和页面动画等;Kotlin与SVG:讲解Kotlin编程语言和SVG图像技术的若干开发技巧;测试与优化:介绍自动化测试框架的设计方法,以及优化应用的常用工具。通过对本书的学习,读者可以极大地提高Android开发的工程能力,从而成为一名合格的高级Android工程师,不仅在理论上有所提升,在实践中也能直接应用。高级Android工程师通过对本书的学习也能完善知识体系和技术栈。
目 录
第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 ADB命令 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 调度器 131
3.2.4 存储器 133
第4章 响应式编程 141
4.1 全面解析响应式库RxJava的使用方式 141
4.1.1 项目框架 142
4.1.2 链式表达式 144
4.1.3 流的加工函数 148
4.1.4 Lambda表达式 151
4.1.5 网络请求 152
4.1.6 控件的异步事件 159
4.1.7 线程安全 161
4.2 全面解析依赖注入库 Dagger 的使用方式 164
4.2.1 工程配置 165
4.2.2 主页逻辑 166
4.2.3 详情逻辑 169
4.3 基于响应式编程的网络数据同步及缓存框架 173
4.3.1 工程配置 174
4.3.2 首页 175
4.3.3 数据源 177
4.3.4 依赖注入 179
4.3.5 无缓存模式 181
4.3.6 缓存模式 183
第5章 炫酷功能 186
5.1 设计与实现朋友圈视频的滚动播放功能 186
5.1.1 项目框架 187
5.1.2 视频列表 189
5.1.3 视频项的适配器 193
5.1.4 视频列表项 196
5.2 设计与实现基于 DialogFragment 的底部弹窗布局 200
5.2.1 首页逻辑 201
5.2.2 弹窗样式 202
5.2.3 弹窗逻辑 204
第6章 精美动画 208
6.1 实现页面切换中元素分享的动画效果 208
6.1.1 项目框架 208
6.1.2 效果显示动画 210
6.1.3 预留位置动画 214
6.2 实现页面展开中圆形爆炸的动画效果 220
6.2.1 首页逻辑 221
6.2.2 新页逻辑 223
6.2.3 显示动画 226
6.2.4 退出动画 229
第7章 Kotlin与SVG 231
7.1 Kotlin基础教程 231
7.1.1 基础部分 232
7.1.2 进阶部分 237
7.2 SVG基础教程 241
7.2.1 Vector图像 242
7.2.2 Vector动画 245
7.2.3 第三方Sharp库 249
第8章 测试与优化 254
8.1 基于Espresso和Dagger的自动化测试框架 254
8.1.1 工程配置 255
8.1.2 业务逻辑 257
8.1.3 功能测试 265
8.2 优化内存泄漏与电量消耗的技术框架 272
8.2.1 内存泄漏 272
8.2.2 电量优化 282
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 ADB命令 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 调度器 131
3.2.4 存储器 133
第4章 响应式编程 141
4.1 全面解析响应式库RxJava的使用方式 141
4.1.1 项目框架 142
4.1.2 链式表达式 144
4.1.3 流的加工函数 148
4.1.4 Lambda表达式 151
4.1.5 网络请求 152
4.1.6 控件的异步事件 159
4.1.7 线程安全 161
4.2 全面解析依赖注入库 Dagger 的使用方式 164
4.2.1 工程配置 165
4.2.2 主页逻辑 166
4.2.3 详情逻辑 169
4.3 基于响应式编程的网络数据同步及缓存框架 173
4.3.1 工程配置 174
4.3.2 首页 175
4.3.3 数据源 177
4.3.4 依赖注入 179
4.3.5 无缓存模式 181
4.3.6 缓存模式 183
第5章 炫酷功能 186
5.1 设计与实现朋友圈视频的滚动播放功能 186
5.1.1 项目框架 187
5.1.2 视频列表 189
5.1.3 视频项的适配器 193
5.1.4 视频列表项 196
5.2 设计与实现基于 DialogFragment 的底部弹窗布局 200
5.2.1 首页逻辑 201
5.2.2 弹窗样式 202
5.2.3 弹窗逻辑 204
第6章 精美动画 208
6.1 实现页面切换中元素分享的动画效果 208
6.1.1 项目框架 208
6.1.2 效果显示动画 210
6.1.3 预留位置动画 214
6.2 实现页面展开中圆形爆炸的动画效果 220
6.2.1 首页逻辑 221
6.2.2 新页逻辑 223
6.2.3 显示动画 226
6.2.4 退出动画 229
第7章 Kotlin与SVG 231
7.1 Kotlin基础教程 231
7.1.1 基础部分 232
7.1.2 进阶部分 237
7.2 SVG基础教程 241
7.2.1 Vector图像 242
7.2.2 Vector动画 245
7.2.3 第三方Sharp库 249
第8章 测试与优化 254
8.1 基于Espresso和Dagger的自动化测试框架 254
8.1.1 工程配置 255
8.1.2 业务逻辑 257
8.1.3 功能测试 265
8.2 优化内存泄漏与电量消耗的技术框架 272
8.2.1 内存泄漏 272
8.2.2 电量优化 282
前 言
前 言
在编程之余,有时候我就在想,什么样的程序员属于高级程序员呢?或者说,高级程序员有哪些特性呢?工作年限一定不是一个关键的指标,许多工作多年的程序员依然写不出优雅的程序。无论是在Android开发还是其他领域,高级程序员一定是勤奋的,可以快速地掌握大量的新技术、新框架,不仅懂得原理,还能把新的技术落地到公司的产品中去。这是衡量程序员工作能力的一个重要标准,那么怎样才能将技术运用自如呢?唯有实践。基于此,我想把自己在日常实践中的一些经典案例,编著成一本成体系的书,以便为想要进步的Android程序员增加更多的实战经验,这也是编写本书的核心目的所在。
编写本书的另外一个目的,是帮助程序员建立产品的思想,对于技术而言,孤立的存在是没有任何意义的,技术只有与需求相结合,才能具有自身的价值。技术人员在开发的过程中,要时刻了解所完成的功能可以为公司带来哪些价值,是提升用户的访问兴趣,还是提升用户的使用流畅度,抑或是其他。当以产品思维去思考技术的时候,就会有动力、有目的地学习更多有价值的技术,而不是哗众取宠地学一些“看似有用”的新技术。
除此之外,还有理解架构的本质。一些技术人员经常会问:“为什么要使用架构?这只会增加额外的代码量,而且并不会对功能或性能有所提升,只需要完成必要的开发任务即可。”这种想法是非常浅显的,因为任何一个应用都不是一次成型的,需要不断地迭代,不断地扩展,同时需要不断地修改已有的业务逻辑,这就会涉及系统兼容性的问题。如何修改新的业务逻辑而不影响旧的业务逻辑?如何限度地复用已有的业务逻辑?架构就是解决这类问题的钥匙,一个优秀且合适的项目架构可以保证系统的稳定性,当开发新的功能或者修改旧的功能时,不至于破坏已有的业务体系。
本书的实例都是经典实战实例,每一个例子都代表一类在开发中需要掌握的技巧。本书由浅入深地逐个讲解需要掌握的开发理论与实践,共分为七部分。
进阶基础:偏重于源码的解析和理解,介绍阅读源码的技巧,以Activity和View为例,管中窥豹地分析其中的基础知识。读者也可依据此类方法,分析其他系统组件的源码。
高阶控件:介绍若干复杂的控件布局,即AppBarLayout、CoordinatorLayout和ConstraintLayout。通过实例,让读者理解在复杂控件布局中子视图是如何组合和相互关联的。
项目架构:分析主流架构的设计思想,即Google推荐的MVP和MVVM,还有Facebook的Flux。理解这些架构是如何组织和管理大型项目的,以及它们的优点和缺点各有哪些。
响应式编程:响应式是一种编程思想,在处理网络请求和功能测试时,基于响应式框架的项目拥有更好的可扩展性和可维护性,响应式编程三剑客即RxJava、Dagger和Retrofit。
酷炫功能与精美动画:实现两个稍复杂的功能,分别是基于第三方控件和基于系统控件的扩展;并实现两个动画效果,分别用于页面展开和页面切换。对于功能和动画,不同的需求或样式层出不穷,本部分侧重于开发思路的分享。
Kotlin与SVG:Kotlin是用于替代Java的高阶编程语言,SVG是用于替代PNG格式的图像技术,本书着重介绍一些基础概念,提纲挈领,以便于读者后续进行自主学习。
测试与优化:分享一个主流的自动化测试框架,以及优化内存与电量的一些常见方法。产品的性能与功能同样重要,应用的高品质也会提升产品的用户体验。
这七部分几乎已经包含高级Android编程的全部内容,本书的每个部分都会通过多个实例,从不同的角度引领读者亲身实战,真正地掌握高级编程的核心开发技巧。但是,实例的数量终究有限,希望读者更多地关注于实战中的开发思想,而不是具体的代码逻辑,代码总会不断地更迭,解决问题的思维却历久弥新。本书中的实例更多的是以点带面,读者可以一边阅读和思考,一边编写代码,相信读完本书,一定受益匪浅;同时,通过本书的实例可以解决一些常见的开发需求。衷心希望每位读者在阅读完本书之后,都“不虚此行”!
将本书送给我正在怀孕的妻子,感谢你在生活和工作中给予我的支持和帮助。
王辰龙
2018年5月于北京海淀
在编程之余,有时候我就在想,什么样的程序员属于高级程序员呢?或者说,高级程序员有哪些特性呢?工作年限一定不是一个关键的指标,许多工作多年的程序员依然写不出优雅的程序。无论是在Android开发还是其他领域,高级程序员一定是勤奋的,可以快速地掌握大量的新技术、新框架,不仅懂得原理,还能把新的技术落地到公司的产品中去。这是衡量程序员工作能力的一个重要标准,那么怎样才能将技术运用自如呢?唯有实践。基于此,我想把自己在日常实践中的一些经典案例,编著成一本成体系的书,以便为想要进步的Android程序员增加更多的实战经验,这也是编写本书的核心目的所在。
编写本书的另外一个目的,是帮助程序员建立产品的思想,对于技术而言,孤立的存在是没有任何意义的,技术只有与需求相结合,才能具有自身的价值。技术人员在开发的过程中,要时刻了解所完成的功能可以为公司带来哪些价值,是提升用户的访问兴趣,还是提升用户的使用流畅度,抑或是其他。当以产品思维去思考技术的时候,就会有动力、有目的地学习更多有价值的技术,而不是哗众取宠地学一些“看似有用”的新技术。
除此之外,还有理解架构的本质。一些技术人员经常会问:“为什么要使用架构?这只会增加额外的代码量,而且并不会对功能或性能有所提升,只需要完成必要的开发任务即可。”这种想法是非常浅显的,因为任何一个应用都不是一次成型的,需要不断地迭代,不断地扩展,同时需要不断地修改已有的业务逻辑,这就会涉及系统兼容性的问题。如何修改新的业务逻辑而不影响旧的业务逻辑?如何限度地复用已有的业务逻辑?架构就是解决这类问题的钥匙,一个优秀且合适的项目架构可以保证系统的稳定性,当开发新的功能或者修改旧的功能时,不至于破坏已有的业务体系。
本书的实例都是经典实战实例,每一个例子都代表一类在开发中需要掌握的技巧。本书由浅入深地逐个讲解需要掌握的开发理论与实践,共分为七部分。
进阶基础:偏重于源码的解析和理解,介绍阅读源码的技巧,以Activity和View为例,管中窥豹地分析其中的基础知识。读者也可依据此类方法,分析其他系统组件的源码。
高阶控件:介绍若干复杂的控件布局,即AppBarLayout、CoordinatorLayout和ConstraintLayout。通过实例,让读者理解在复杂控件布局中子视图是如何组合和相互关联的。
项目架构:分析主流架构的设计思想,即Google推荐的MVP和MVVM,还有Facebook的Flux。理解这些架构是如何组织和管理大型项目的,以及它们的优点和缺点各有哪些。
响应式编程:响应式是一种编程思想,在处理网络请求和功能测试时,基于响应式框架的项目拥有更好的可扩展性和可维护性,响应式编程三剑客即RxJava、Dagger和Retrofit。
酷炫功能与精美动画:实现两个稍复杂的功能,分别是基于第三方控件和基于系统控件的扩展;并实现两个动画效果,分别用于页面展开和页面切换。对于功能和动画,不同的需求或样式层出不穷,本部分侧重于开发思路的分享。
Kotlin与SVG:Kotlin是用于替代Java的高阶编程语言,SVG是用于替代PNG格式的图像技术,本书着重介绍一些基础概念,提纲挈领,以便于读者后续进行自主学习。
测试与优化:分享一个主流的自动化测试框架,以及优化内存与电量的一些常见方法。产品的性能与功能同样重要,应用的高品质也会提升产品的用户体验。
这七部分几乎已经包含高级Android编程的全部内容,本书的每个部分都会通过多个实例,从不同的角度引领读者亲身实战,真正地掌握高级编程的核心开发技巧。但是,实例的数量终究有限,希望读者更多地关注于实战中的开发思想,而不是具体的代码逻辑,代码总会不断地更迭,解决问题的思维却历久弥新。本书中的实例更多的是以点带面,读者可以一边阅读和思考,一边编写代码,相信读完本书,一定受益匪浅;同时,通过本书的实例可以解决一些常见的开发需求。衷心希望每位读者在阅读完本书之后,都“不虚此行”!
将本书送给我正在怀孕的妻子,感谢你在生活和工作中给予我的支持和帮助。
王辰龙
2018年5月于北京海淀
媒体评论
与市面上的入门书不同,本书侧重于项目实战,并引入了实战中较前沿的知识,如Kotlin、项目架构、自动化测试框架等。相信这些知识能帮助更多的中级工程师向高级工程师迈进,值得一看!
徐烨 美团高级Android开发工程师
徐烨 美团高级Android开发工程师
本书通过大量的实例,将晦涩抽象的知识点更清晰、直观地进行展现,相信读者会有茅塞顿开和“so easy”之感。本书对于架构和性能优化也有清晰的介绍和归纳,利于读者提高技术水平,很适合期待进阶为高级或资深Android工程师的有识之士阅读。
王泽文 快手资深Android开发工程师
本书深入浅出,从开发模式到常用的流行框架和性能优化方法,都进行了由表及里的深入分析,对于Android进阶非常有益。本书结合实践案例进行讲解,摒弃了枯燥的原理陈述,可让读者在具体场景下了解Android技术。
张云华 网易云音乐资深Android开发工程师
本书是作者对Android格物致知的结晶。全书采用专题形式进行讲解,非常方便读者按需所取、专项突破。本书在内容选取上既有对基础知识深入浅出的原理分析,也有对工程架构的实践探讨,更有对Android热门、前沿知识的讲解。希望读者不仅可以收获一个个专题,更能体会到作者既有深度又有广度,并在此基础上构建技术体系的学习方法。
吴林 春雨医生资深Android开发工程师
评论
还没有评论。