

内容简介
本书是一本Android进阶类书籍,书中各知识点由浅入深、环环相扣,最终这些知识点形成了一个体系
结构。本书共分为11章。第1章介绍Android 5.0到Android 7.0的新特性。第2章介绍Material Design。第3章介
绍View体系,包括View的事件分发、工作流程、自定义View等知识点。第4章介绍多线程的知识。第5章介
绍网络编程与网络框架的知识。第6章介绍常用的设计模式。第7章介绍事件总线。第8到第10章介绍架构设
计所需要的知识点。第11章简单介绍Android系统框架与MediaPlayer框架。
本书详细并深入讲解Android开发者必备的和前沿的知识,适合有一定开发基础的开发者阅读,这有助
于他们提高技术水平;同时,本书系统的知识体系结构也令高级开发者从中获益良多。
未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。
版权所有,侵权必究。
图书在版编目(CIP)数据
Android进阶之光/刘望舒著.—北京:电子工业出版社,2017.7
ISBN 978-7-121-31530-5
Ⅰ.①A… Ⅱ.①刘… Ⅲ.①移动终端-应用程序-程序设计 Ⅳ.①TN929.53
中国版本图书馆CIP数据核字(2017)第108511号
策划编辑:付睿
责任编辑:李云静
印刷:
装订:
出版发行:电子工业出版社
北京市海淀区万寿路173信箱 邮编:100036
开本:787×1092 1/16 印张:30.75 字数:764千字
版次:2017年7月第1版
印次:2017年7月第1次印刷
定价:89.00元
凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,
联系及邮购电话:(010)88254888,88258888
质量投诉请发邮件至[email protected],盗版侵权举报请发邮件至[email protected]。
本书咨询联系方式:010-51260888-819 [email protected]。

前言
为什么写这本书
从2008年Android系统发布以来,Android已经发展了9年。在此期间,Android开发也相当火热。这时,
大量人员涌入 Android 开发职场,并导致 Android 开发人才市场相对饱和。如此一来,很多 Android 开发者
会发现工作越来越难找,企业对开发者的要求也越来越高,企业需求最多的不再是初中级别的Android工程
师,而是Android高级工程师。但是,Android高级工程师有限。有些人在从事了几年开发工作后,对很多技
术的理解却仍停留在会用的阶段。他们对于原理不求甚解,这导致他们进入技术瓶颈期并长期无法得到提
高。很多开发者为了突破技术瓶颈,看了大量的网络视频和博客。尽管如此,他们仍旧无法突破自身的技
术瓶颈。其主要原因是,他们没有将学到的知识点形成体系化。因此,这就需要有一本成体系的进阶书来
帮助这些开发人员成为 Android 高级工程师并突破自身的技术瓶颈。纵观市面上 Android 开发相关的书籍,
其中大部分书籍是入门级别类图书,还有一部分系统源码、逆向分析和系统移植类图书,而关于应用开发
进阶的书籍则少得可怜。本书正是一本成体系的应用开发进阶图书,书中所要传达的不仅仅是知识,其同
时还会告诉读者以下几点。
1.要关注Android新技术;
2.Java基础和设计模式很重要;
3.学习框架要深入其原理;
4.要学习架构设计;
5.要了解和学习系统源码。
本书内容
本书共分为11章,各章内容如下。
• 第1章介绍 Android 5.0、Android 6.0、Android 7.0 的新特性,包括 Android 5.0 的RecyclerView、
Android 6.0的运行时权限机制和Android 7.0的多窗口模式等知识点。
• 第2章介绍 Material Design 以及 Design Support Library 常用的控件,并给出实例将Design Support
Library中的常用控件结合在一起使用。
• 第3章介绍View相关的进阶知识,包括View的滑动、View的事件分发和View的工作流程。最后结合以
上知识点来介绍自定义View。
• 第4章介绍多线程编程,本章不仅包括基础的线程知识,还会介绍线程同步和线程池等进阶知识点,
最后结合这些知识点来分析Android 7.0的AsyncTask的源码。
• 第5章介绍网络编程的基础知识以及常用的网络框架:Volley、OkHttp和Retrofit的使用方法和原理分
析。
• 第6章将设计模式进行分类,并介绍每个分类中常用的设计模式。
• 第7章介绍事件总线EventBus和otto的使用方法和原理。
• 第8章介绍函数响应式编程RxJava的使用方法,包括RxJava的基本使用、操作符、使用场景和源码分
析等知识点。
• 第9章介绍注解的知识点和依赖注入框架ButterKnife和Dagger2的使用方法以及原理。
• 第10章介绍Android应用架构设计,包括MVP框架以及MVP结合RxJava和Dagger2,还有MVVM框架
相关的Data Binding支持库。
• 第11章主要是指引读者进行Android系统源码阅读并带其入门,介绍Android系统框架、源码目录和阅
读源码工具,并以分析MediaPlayer框架的源码作为示例。
本书特色
本书主要有以下特点。
• 本书整体结构由浅入深,从最简单的第1章到难一些的第11章,其难度是逐步加深的。
• 本书为了分析一些框架的原理,会介绍一些知识点做铺垫,比如为了更好地介绍依赖注入框架,需要

首先了解注解相关的知识点。再比如要分析AsyncTask的源码,则需要了解线程池和阻塞队列等知识点。
• 本书的知识点环环相扣,比如要介绍MVP框架的设计,就需要先学习Retrofit、RxJava和Dagger2的相
关知识点。
• 本书对于很多知识点都有很深入的讲解。其中,对于常用的框架,比如OkHttp、Retrofit、EventBus和
RxJava等不只是讲解了如何使用,而且更加深入地介绍了其原理。
• 本书是目前市场上详细介绍有关Android新特性、Material Design、网络框架、事件总线、RxJava、依
赖注入框架和应用架构设计的难得一见的图书。
读者对象
本书的章节设计是由浅入深的,适合 Android 初、中、高级工程师阅读。本书的定位是学习Android的
第二本书,其阅读前提是要有一定的Android基础。
致谢
感谢本书的策划编辑付睿,她在CSDN博客中发现了我,并积极推动本书的出版进度,这才使得本书得
以及时出版。感谢本书的责任编辑李云静,她审稿时很细致,这使得书中的一些错误能被提早发现并改
正。感谢我的父母在写书过程中对我的不断鼓励,这样我才得以全力以赴地投入编写工作。感谢所有关注
我的朋友们,你们的鼓励和认可为我写博客以及写书带来了不可或缺的动力。
勘误与互动
本人虽已竭尽全力,但书中难免会有错误,欢迎大家向我反馈,我也会在独立博客和CSDN博客中定期
发布本书的勘误信息。
本书互动地址
独立博客:http://liuwangshu.cn
CSDN博客:http://blog.csdn.net/itachi85
GitHub:https://github.com/henrymorgen
微信公众号:刘望舒
QQ交流群:499174415
源码下载
https://github.com/henrymorgen/android-advanced-light
http://www.broadview.com.cn/31530
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
• 下载资源:本书如提供示例代码及资源文件,均可在下载资源处下载。
• 提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社区积分(在
您购买电子书时,积分可用来抵扣相应金额)。
• 交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/31530

目录
前言
第1章 Android新特性
1.1 Android 5.0新特性
1.1.1 Android 5.0主要新特性概述
1.1.2 替换ListView和GridView的RecyclerView
1.1.3 卡片CardView
1.1.4 3种Notification
1.1.5 Toolbar与Palette
1.2 Android 6.0新特性
1.2.1 Android 6.0主要新特性概述
1.2.2 运行时权限机制
1.3 Android 7.0新特性
1.3.1 Android 7.0主要新特性概述
1.3.2 多窗口模式
1.4 本章小结
第2章 Material Design
2.1 Material Design概述
2.1.1 核心思想
2.1.2 材质与空间
2.1.3 动画
2.1.4 样式
2.1.5 图标
2.1.6 图像
2.1.7 组件
2.2 Design Support Library常用控件详解
2.2.1 Snackbar的使用
2.2.2 用TextlnputLayout实现登录界面
2.2.3 FloatingActionButton的使用
2.2.4 用TabLayout实现类似网易选项卡的动态滑动效果
2.2.5 用NavigationView实现抽屉菜单界面
2.2.6 用CoordinatorLayout实现Toolbar隐藏和折叠
2.3 本章小结
第3章 View体系与自定义View
3.1 View与ViewGroup
3.2 坐标系
3.2.1 Android坐标系
3.2.2 View坐标系
3.3 View的滑动
3.3.1 layout()方法