新書推薦:
《
透过器物看历史(全6册)
》
售價:HK$
490.6
《
我在台北故宫博物院读名画
》
售價:HK$
109.8
《
尼罗河往事:古埃及文明4000年
》
售價:HK$
76.2
《
一个人·谁也不是·十万人(诺贝尔文学奖得主反思自我的巅峰之作)
》
售價:HK$
54.9
《
重写晚明史(全5册 精装)
》
售價:HK$
781.8
《
汉末晋初之际政治研究
》
售價:HK$
132.2
《
强者破局:资治通鉴成事之道
》
售價:HK$
80.6
《
鸣沙丛书·鼎革:南北议和与清帝退位
》
售價:HK$
121.0
|
編輯推薦: |
本书实例都来自对在日常开发中遇到的问题的抽象,涉及整个Android开发的各个技术栈。
从常见的问题入手,引导读者逐步地掌握进阶的各个实例,同时提供分析和解决问题的思考过程,寻求*方案。
内容涉及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.1Activity的生命周期的各种状态2
1.1.2实例:准备4
1.1.3实例:因硬件导致的生命周期变化6
1.1.4实例:页面切换时的生命周期变化11
1.1.5实例:由系统原因导致的生命周期变化16
1.2深入剖析Activity的启动模式20
1.2.1ADB命令20
1.2.2标准模式21
1.2.3栈顶复用模式25
1.2.4栈内复用模式27
1.2.5单实例模式32
1.2.6startActivity34
1.3深入剖析View的工作流程36
1.3.1装饰视图和MeasureSpec38
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.1MVC架构111
3.1.2MVP架构116
3.1.3MVVM架构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.4Ambda表达式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与SVG231
7.1Kotlin基础教程231
7.1.1基础部分232
7.1.2进阶部分237
7.2SVG基础教程241
7.2.1Vector图像242
7.2.2Vector动画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月于北京海淀
|
|