重磅推荐
【编辑推荐】



本书实战性极强,既有基础实例,又有技巧提高,包含以下精华内容:
Android体系与系统架构
Android开发工具
Android控件架构与自定义控件详解
List View使用技巧
Android Scroll分析
Android绘图机制与处理技巧
Android动画机制与使用技巧
Activity与Activity调用栈分析
Android系统信息与安全机制
Android性能优化
搭建云端服务器
Android 5.X新特性详解
Android实例提高
【内容简介】
本书从由总到分,让读者从整体上把握Android体系结构,融入“群英传”这一故事情节,针对各个知识点进行分类阐述,并结合一线实际开发经验和Android 5.0版本新特性来,紧跟市场需求进行讲解。然后通过实战应用案例,综合使用前面讲解到的知识点,进一步提高开发者水平。
【作者简介】
徐宜生,曾就职于上海TCL通讯,从事Alcatel(阿尔卡特)Android手机系统的定制工作,目前就职于上海沪江网Android开发部RD项目组,负责沪江App的功能预研。真正的一线开发人员。活跃在CSDN技术博客的年轻工程师,荣获CSDN认证专家,文章风格幽默风趣,单篇文章有上万的阅读量,深受年轻程序员的喜爱。在慕课网上开设课程,有数万名学员听课,参与讨论。
【目录】
第1章 Android体系与系统架构 1
1.1 Google生态系统 2
1.2 Android系统架构 2
1.2.1 Linux 3
1.2.2 Dalvik与ART 3
1.2.3 Framework 3
1.2.4 Standard libraries 4
1.2.5 Application 4
1.3 Android App组件架构 4
1.3.1 Android四大组件如何协同工作 5
1.3.2 应用运行上下文对象 5
1.4 Android系统源代码目录与系统目录 6
1.4.1 Android系统源代码目录 6
1.4.2 Android系统目录 8
1.4.3 Android App文件目录 11





第2章 Android开发工具新接触 13
2.1 Android开发IDE介绍 14
2.1.1 Android Studio初体验 14
2.1.2 Android Studio配置 15
2.2 Android Studio高级使用技巧 19
2.2.1 更新SDK 20
2.2.2 Android Studio常用界面 21
2.2.3 导入Android Studio工程 23
2.3 ADB命令使用技巧 24
2.3.1 ADB基础 24
2.3.2 ADB常用命令 25
2.3.3 ADB命令来源 29
2.4 模拟器使用与配置 29






第3章 Android控件架构与自定义控件详解 32
3.1 Android控件架构 33
3.2 View的测量 34
3.3 View的绘制 37
3.4 ViewGroup的测量 38
3.5 ViewGroup的绘制 39
3.6 自定义View 39
3.6.1 对现有控件进行拓展 40
3.6.2 创建复合控件 43
3.6.3 重写View来实现全新的控件 51
3.7 自定义ViewGroup 54
3.8 事件拦截机制分析 59






第4章 ListView使用技巧 65
4.1 ListView常用优化技巧 66
4.1.1 使用ViewHolder模式提高效率 66
4.1.2 设置项目间分隔线 68
4.1.3 隐藏ListView的滚动条 68
4.1.4 取消ListView的Item点击效果 68
4.1.5 设置ListView需要显示在第几项 69
4.1.6 动态修改ListView 69
4.1.7 遍历ListView中的所有Item 71
4.1.8 处理空ListView 71
4.1.9 ListView滑动监听 72
4.2 ListView常用拓展 74
4.2.1 具有弹性的ListView 75
4.2.2 自动显示、隐藏布局的ListView 76
4.2.3 聊天ListView 79
4.2.4 动态改变ListView布局 85






第5章 Android Scroll分析 87
5.1 滑动效果是如何产生的 88
5.1.1 Android坐标系 88
5.1.2 视图坐标系 88
5.1.3 触控事件——MotionEvent 89
5.2 实现滑动的七种方法 91
5.2.1 layout方法 92
5.2.2 offsetLeftAndRight()与offsetTopAndBottom() 93
5.2.3 LayoutParams 93
5.2.4 scrollTo与scrollBy 94
5.2.5 Scroller 96
5.2.6 属性动画 98
5.2.7 ViewDragHelper 98






第6章 Android绘图机制与处理技巧 106
6.1 屏幕的尺寸信息 107
6.1.1 屏幕参数 107
6.1.2 系统屏幕密度 107
6.1.3 独立像素密度dp 107
6.1.4 单位转换 108
6.2 2D绘图基础 110
6.3 Android XML绘图 113
6.3.1 Bitmap 113
6.3.2 Shape 113
6.3.3 Layer 115
6.3.4 Selector 116
6.4 Android绘图技巧 117
6.4.1 Canvas 117
6.4.2 Layer图层 121
6.5 Android图像处理之色彩特效处理 122
6.5.1 色彩矩阵分析 122
6.5.2 Android颜色矩阵——ColorMatrix 128
6.5.3 常用图像颜色矩阵处理效果 131
6.5.4 像素点分析 134
6.5.5 常用图像像素点处理效果 135
6.6 Android图像处理之图形特效处理 137
6.6.1 Android变形矩阵——Matrix 137
6.6.2 像素块分析 142
6.7 Android图像处理之画笔特效处理 145
6.7.1 PorterDuffXfermode 145
6.7.2 Shader 149
6.7.3 PathEffect 153
6.8 View之孪生兄弟——SurfaceView 155
6.8.1 SurfaceView与View的区别 155
6.8.2 SurfaceView的使用 156
6.8.3 SurfaceView实例 159






第7章 Android动画机制与使用技巧 162
7.1 Android View动画框架 163
7.1.1 透明度动画 163
7.1.2 旋转动画 163
7.1.3 位移动画 164
7.1.4 缩放动画 164
7.1.5 动画集合 164
7.2 Android属性动画分析 165
7.2.1 ObjectAnimator 166
7.2.2 PropertyValuesHolder 168
7.2.3 ValueAnimator 168
7.2.4 动画事件的监听 168
7.2.5 AnimatorSet 169
7.2.6 在XML中使用属性动画 170
7.2.7 View的animate方法 170
7.3 Android布局动画 171
7.4 Interpolators(插值器) 171
7.5 自定义动画 172
7.6 Android 5.X SVG矢量动画机制 175
7.6.1 <path>标签 175
7.6.2 SVG常用指令 176
7.6.3 SVG编辑器 177
7.6.4 Android中使用SVG 177
7.6.5 SVG动画实例 181
7.7 Android动画特效 188
7.7.1 灵动菜单 188
7.7.2 计时器动画 190
7.7.3 下拉展开动画 191






第8章 Activity与Activity调用栈分析 195
8.1 Activity 196
8.1.1 起源 196
8.1.2 Activity形态 196
8.1.3 生命周期 196
8.2 Android任务栈简介 200
8.3 AndroidMainifest启动模式 200
8.3.1 standard 201
8.3.2 singleTop 201
8.3.3 singleTask 201
8.3.4 singleInstance 202
8.4 Intent Flag启动模式 203
8.5 清空任务栈 203
8.6 Activity任务栈使用 204






第9章 Android系统信息与安全机制 205
9.1 Android系统信息获取 206
9.1.1 android.os.Build 206
9.1.2 SystemProperty 207
9.1.3 Android系统信息实例 208
9.2 Android Apk应用信息获取之PackageManager 209
9.2.1 PackageManager 210
9.3 Android Apk应用信息获取之ActivityManager 215
9.4 解析Packages.xml获取系统信息 218
9.5 Android安全机制 220
9.5.1 Android安全机制简介 220
9.5.2 Android系统安全隐患 222
9.5.3 Android Apk反编译 223
9.5.4 Android Apk加密 226






第10章 Android性能优化 227
10.1 布局优化 228
10.1.1 Android UI渲染机制 228
10.1.2 避免Overdraw 229
10.1.3 优化布局层级 229
10.1.4 避免嵌套过多无用布局 229
10.1.5 Hierarchy Viewer 234
10.2 内存优化 236
10.2.1 什么是内存 236
10.2.2 获取Android系统内存信息 237
10.2.3 内存回收 238
10.2.4 内存优化实例 238
10.3 Lint工具 240
10.4 使用Android Studio的Memory Monitor工具 240
10.5 使用TraceView工具优化App性能 241
10.5.1 生成TraceView日志的两种方法 241
10.5.2 打开TraceView日志 242
10.5.3 分析TraceView日志 242
10.6 使用MAT工具分析App内存状态 244
10.6.1 生成HPROF文件 244
10.6.2 分析HPROF文件 245
10.7 使用Dumpsys命令分

【前言】

写书之前
当电子工业出版社的官杨女士邀请我写书之前,我一直在CSDN博客坚持发表Android相关的技术博客,并给在线教育网站——慕课网录制Android相关的教学视频。自大学接触Android以来,通过不断的学习,逐渐对Android开发有了越来越深入的了解。回想当初学习Android的时候,还是有很多感触的。由于对Java语言的熟悉,因此Android的入门就显得非常轻松,然而学习一段时间后,虽然对Android的基础内容已经掌握得比较熟练,但仍然无法做出比较满意的App。一方面想通过综合的App来提升自己学习的成就感,一方面又无法融会贯通知识点,创作过程中坎坷不断。其实这段过程与大多数人的高中时期是非常相像的,记得当时在高中的时候,很多人都会遇到一个学习的瓶颈期,这段时间里,对基础的东西掌握得非常熟练,但对稍微拔高一点的内容就力不从心,总是不能发挥出应有的能力。其实不管学习什么东西都是一样,都存在这样的瓶颈期,这时候,其实你并不是没有能力去解决这些问题,而是没有找到解决问题的方法。我觉得,克服瓶颈期的办法就是六个字——总结、归纳、演绎。
我们在学*项知识的时候,不能只停留在基础的层面上,你不仅仅是一个学习者,更应该是一个创造者。就拿学习Android来说,如果仅仅去学习如何使用Android提供的API,或者去网上寻找现成的解决方法,那么即使再熟练,也还是一个低级的层次。当基础的东西掌握熟练之后,就应该总结知识、归纳知识,并将其扩充到自己的认知、理解中。你需要记忆的不仅仅是API的使用方法,更应该了解为何Android要这样设计,API的参数不记得可以去查,但对它的理解,却是属于自己的。这就好像高中的物理公式,很多人觉得非常难记,的确,如果单纯地看那些字母组成的公式,确实非常难记,但实际上,那些复杂的物理公式,都是可以由基本的公式一步步推导出来的,每个字母并不是单纯的字母,都有它背后的含义,结合这些东西去记,公式就像活了一样。同样,Android的学习也是如此,站在知识体系的高度上重新去理解那些基础知识,你才能真正地把它们融合起来,任何一个组件的设计,都不是独立的,总结、归纳、演绎它们之间的联系才是记忆知识的方法。
我跟很多Android开发者一样,也经历过了这样一个阶段,因此对于开发者,特别是自学开发者的这段时期的心情深有体会,所以在官杨女士邀请我写书的时候,我就萌生了写这样一本书的念头。期望从我的学习经历、开发经验中整理出正确的学习方法,让开发者少走弯路,帮助Android开发者早日渡过瓶颈期。
本书内容结构
我在学习、研究Android的过程中,也读过很多前辈们写的Android书籍,这些书籍大多分为三类:基础型、实例型和底层型。
基础型是市面上较多的一类书籍,这些书籍基本上有一个共性,就是按照Android组件类型、资源类型、网络、传感器等方面进行非常细致的讲解。在学习的初期,这样的书确实是非常有必要的,它可以帮你快速地了解整个Android的内容,但里面的很多东西,其实用的并不多,全部罗列在一起,反而增加了记忆的难度。实例型的书籍是受开发者喜爱的一类,大家都希望通过看这些实例型的书籍来快速提高创造的成就感,但是很多时候,在看完这类书后却发现,除了书中讲的实例之外,还是无法独立完成一个App。而底层型的书籍相对于应用层的书籍来说,是zui难读懂的,很多应用开发者都希望通过了解底层的实现细节来更好地掌握Android系统,这当然是非常正确的,不过这些底层型的书籍的作者,大多都是经验非常丰富的高手,书中包含了大量的底层实现细节,初学者在阅读时,由于功力不够,会导致越读越没有信心。
所以我在写这本书的时候,就在想如何才能避免上面的类似情况发生。记得还是在读高中的时候,市面上的参考书,基本上也是这样一个情况,但是有一本书却给我留下了很不错的印象——重难点手册。这本书不像其他参考书那样把书本上所有的知识点都罗列出来,也不会通过题海战术让学生背题,而是通过知识点的关系图理清知识点之间的联系,再通过分析重点、难点的知识点,来提高学生对知识体系的认识与理解。我期望我写的这本书能达到这样的一个效果,那么所有的辛苦也就值得了。
本书大致分为四个部分。
第1~2章:讲解Android背景知识与Android架构、IDE相关的基本知识点。
第2~12章:从宏观上讲解Android中比较重要的组件和它们之间的关系、架构。针对Android开发中的重点、难点,讲解开发中重要的经验和技巧,并总结、归纳其使用方法。
第13章:通过实例开发过程的讲解,综合运用知识点。
本书读者对象
本书适用于各个层次的Android开发者。对于Android初学者来说,可以通过前两部分的内容,快速建立Android开发的知识体系;对于有经验的Android开发者来说,可以通过对这本书的学习快速提高自己的开发经验;对于处于瓶颈期的开发者来说,更是可以非常有效地提高开发能力。
本书特色
本书各个章节之间并没有严格的递近关系,读者可以随时挑选自己感兴趣的章节开始读起。
本书在讲解时,尽量使用通俗易懂的讲解方式,不讲过多深入的理论和不常用的知识点,而是将这些深入分析的过程留给读者,培养读者去分析、理解的能力。
本书所使用的代码都基于Google的Android Studio上进行开发,所有的实例都在Android Studio 1.1正式版上通过测试,对读者使用Android Studio具有很好的帮助。同时,书中包含了大量Android 5.X的新功能实例,读者可以zui少时间掌握Android 5.X的新特性,并运用到自己的App中。
本书中不仅介绍了Android组件之间的联系与设计思想,同时与很多Framework层的知识点联系起来,让读者知其然,并知其所以然。
本书中不引用大量的底层实现代码,而是先让读者对系统的实现有一个认识,等到读者遇到相关的问题时,再去查看源代码中的实现。这样就不再全没有方向、摸不着头脑,而是有目的地去验证。
笔者作为Android的一线开发者,所写内容具有很强的实战性,而且本书中很多实例都来源于平时网友、群友的问题,应用性强。
学习方法
在学习Android的初期阶段,开发者可以通过一本比较详细、丰富的讲解基本内容的书籍,对整个Android有一个比较清晰的印象,当然,zui好的基础学习资料莫过于Google的API Guide和Training,这些内容经常被开发者所忽视,但是确实是有价值的学习资料,不仅权威,而且非常实用,地址如下所示:
API Guide http://developer.android.com/guide/index.html
Training http://developer.android.com/training/index.html
另外,在线教育视频网站——慕课网,也是非常好的学习资源,通过这里的视频教程,开发者可以利用空余时间很好的提高自己,地址如下所示:
慕课网 http://www.imooc.com/
在对基础知识有所掌握后,通过本书的学习,相信大家的开发能力一定能更上一层楼。
致谢
感谢朋友、群友在我写书的这段时间内对我的帮助,也感谢电子工业出版社的官杨女士和出版社的编辑们对我文章的核对和建议,没有你们的帮助,也就没有这本书的诞生。
资源与勘误
由于个人能力的局限,虽已竭尽全力,但对于书中的一些问题的分析难免会有纰漏,实例中的解决方法可能也不是尽善尽美,敬请读者海涵,并希望读者朋友能将发现的问题及时向我反馈,我将感激不尽。书中的代码、实例,都会上传到Github代码分享平台供大家frok、下载。同时,本书的勘误与读者的反馈内容都将在我的个人博客上不断更新。
源代码Github:https://github.com/xuyisheng/AndroidHeros
本书微信公众号:Android群英传
【书摘与插画】

返回顶部