前言
写书之前
当电子工业出版社的官杨女士邀请我写书之前,我一直在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。而底层型的书籍相对于应用层的书籍来说是最难读懂的,很多应用开发者都希望通过了解底层的实现细节来更好地掌握Android系统,这当然是非常正确的,不过这些底层型的书籍的作者,大多都是经验非常丰富的高手,书中包含了大量的底层实现细节,初学者在阅读时,由于功力不够会导致越读越没有信心。
所以我在写这本书的时候,就在想如何才能避免上面的类似情况发生。记得还是在读高中的时候,市面上的参考书,基本上也是这样一个情况,但是有一本书却给我留下了很不错的印象——重难点手册。这本书不像其他参考书那样把书本上所有的知识点都罗列出来,也不会通过题海战术让学生背题,而是通过知识点的关系图理清知识点之间的联系,再通过分析重点、难点的知识点,来提高学生对知识体系的认识与理解。我期望我写的这本书能达到这样的一个效果,那么所有的辛苦也就值得了。
而这本书之所以取名为《Android群英传》,是因为我想通过比较轻松有趣的名字来提高读者的学习兴趣。Android中的一个个知识点,并非是枯燥乏味的,通过一些神话、传说故事来类比这些知识点,可以让读者在阅读过程中,能体会到学习的乐趣。
创世纪(第1~2章):讲解Android背景知识与Android架构、IDE相关的基本知识点。讲解Android体系架构,好比上帝的创世纪,告诉读者如何理解Android的架构;讲解Android开发的工具,好比上古四大神器,让读者欲善其事,必先利其器。
群英会(第3~12章):针对Android开发中的重点、难点,讲解开发中重要的经验和技巧,并总结、归纳其使用方法。这几章讲解了Android中一些比较重要的组件和设计方法,笔者分别为它们著书立传,让每个知识点都好比一个英雄的传记。例如讲解Android控件架构,好比神笔马良的故事,让读者知道如何去设计控件。
地下城(第13章):通过实例开发过程的讲解,综合运用知识点。本篇带领读者来到地下城的挑战,综合前面的知识点,好比读者在玩游戏的时候,在升级过程中,去挑战一些比较有难度的地下城,获得更多的经验。
本书读者对象
本书适用于各个层次的Android开发者。对于Android初学者来说,可以通过前两部分的内容,快速建立Android开发的知识体系;对于有经验的Android开发者来说,可以通过对这本书的学习快速提高自己的开发经验;对于处于瓶颈期的开发者来说,更是可以非常有效地提高开发能力。
本书特色
● 本书各个章节之间并没有严格的递近关系,读者可以随时挑选自己感兴趣的章节开始读起。
● 本书在讲解时,尽量使用通俗易懂的讲解方式,不讲过多深入的理论和不常用的知识点,而是将这些深入分析的过程留给读者,培养读者分析、理解的能力。
● 本书所使用的代码都是基于Google最新的Android Studio进行开发的,所有的实例都在Android Studio 1.1正式版上通过测试,对读者使用Android Studio具有很好的帮助。同时,书中包含了大量Android 5.X的新功能实例,读者可以第一时间掌握Android 5.X的新特性,并运用到自己的App中。
● 书不仅介绍了Android组件之间的联系与设计思想,同时与很多Framework层的知识点联系起来,让读者知其然,并知其所以然。
● 本书中不引用大量的底层实现代码,而是先让读者对系统的实现有一个认识,等到读者遇到相关的问题时,再去查看源代码中的实现。这样就不会没有方向、摸不着头脑,而是有目的地去验证。
● 笔者作为Android的一线开发者,所写内容具有很强的实战性,而且书中很多实例都来源于平时网友、群友的问题,因此应用性强。
学习方法
在学习Android的初期阶段,开发者可以通过一本比较详细、丰富的讲解基本内容的书籍,对整个Android有一个比较清晰的印象。当然,最好的基础学习资料莫过于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/space/teacher/id/347333
在对基础知识有所掌握后,通过本书的学习,相信大家的开发能力一定能更上一层楼。
致谢
感谢朋友、群友在我写书的这段时间内对我的帮助,也感谢电子工业出版社编辑们对文章的核对和建议,没有你们的帮助,也就没有这本书的诞生。
资源与勘误
由于个人能力的局限,虽已竭尽全力,但对于书中一些问题的分析难免会有纰漏,实例中的解决方法可能也不是尽善尽美,敬请读者海涵,并希望读者朋友能将发现的问题及时向笔者反馈,笔者将感激不尽。书中的代码、实例,都会上传到Github代码分享平台供大家frok、下载。同时,本书的勘误与读者的反馈内容都将在笔者的博客和微信公众账号上不断更新。
源代码Github:https://github.com/xuyisheng/AndroidHeros
CSDN博客地址:http://blog.csdn.net/eclipsexys
本书微信公众号:Android群英传