如何学习Android开发

如何学习Android开发

学习Android开发,对每个新手都是一个很大的挑战,就好像在异国他乡学会生存一样。即使会说当地的语言,一开始也绝不会有在家的感觉,因为你不能完全理解周围人理解的东西。原有的知识储备在新环境下可能完全派不上用场。

Android有自己的语言文化——Java语言。但仅掌握Java远远不够,还需要学习很多新的理论和技术知识来理清头绪,从而指引你穿越陌生的领域。

该由我们登场了。在Big Nerd Ranch,我们认为,要成为一名合格的Android开发人员,必须做到:

  • 着手开发一些Android应用;

  • 彻底理解你的Android应用。

本书将协助你完成以上两件事情。我们已用它成功培训了数百位专业的Android开发人员。本书将指导你完成多个Android应用开发,并根据需要逐步介绍各种理论概念及技术知识。在学习过程中,如果遇到知识疑难点,请勇敢面对;我们也会尽最大努力抽丝剥茧,让你知其然更知其所以然。

我们的教学方法是:在学习理论的同时,就着手运用它们开发实际的应用,而非先学习一大堆理论,再考虑如何将理论应用于实践。

读完本书,你将具备必要的开发经验及知识。以此为起点,你就能深入学习和开发,成长为一名合格的Android开发者。

本书读者对象

使用本书,你需要熟悉Java语言,包括类、对象、接口、监听器、包、内部类、匿名内部类、泛型类等基本概念。

如果对这些概念感到陌生,那么你很可能在翻到第二页时就已经无法再读下去了。对此,建议先放下本书,找本Java入门书看一看。市面上有很多优秀的Java入门书,你可以基于自己的编程经验及学习风格去挑选。

如果你熟悉面向对象编程,但Java知识忘得差不多了,那么阅读本书应该不会有太大的问题。对于接口、匿名内部类等重要的Java语言点,我们会提供必要的简短回顾。建议在学习过程中手边备上一本Java参考书,方便查阅。

第2版有哪些新内容

本书第2版会教读者学习如何使用Android Studio集成环境开发各类面向Android 5.1(Lollipop)并向后兼容Android 4.1(Jelly Bean)的应用。除了Lollipop新引入的toolbar和material design,本书还更新介绍了一些Android编程基础知识。此外,本书还涵盖了支持库中的一些新工具,如RecycleView和Google Play服务,以及一些标准库工具,如SoundPool、animation和assets。

如何使用本书

本书基于Big Nerd Ranch培训基地的5天教学课程编写而成。课程从基础知识讲起,各章节内容以循序渐进的方式编排,建议不要跳读,以免学习效果大打折扣。显然,本书不适合作为参考书。本书旨在帮你跨越学习的初始障碍,进而充分利用其他各种参考资料和代码实例类图书来深入学习。

我们为学员提供了良好的培训环境:专门的培训教室、可口的美食、舒适的住宿条件、动力十足的学习伙伴,以及一位随时答疑解惑的指导老师。

本书读者同样需要类似的良好环境。因此,应保证充足的睡眠,找一个安静的地方开始学习。参考以下建议也很有帮助:

(1) 组织朋友或同事组成兴趣小组学习;

(2) 集中安排时间逐章学习;

(3) 参与本书论坛的交流讨论(forums.bignerdranch.com);

(4) 寻求Android开发高手的帮助。

本书内容

通过本书,我们会学习开发8个Android应用。有些应用很简单,一章即可讲完;有些则相对复杂。最复杂的一个应用跨越了11章。通过这些精心编排的应用,你能学到很多重要的理论知识和开发技巧,并获得最直接的开发经验。

  • GeoQuiz

    本书的第一个应用,通过它学习Android应用的基本组成、activity、界面布局(layout)以及显式intent。

  • CriminalIntent

    本书最复杂的应用,用来记录办公室同事的种种陋习。通过本应用学习fragment、master-detail用户界面、list-backed用户界面、菜单选项、相机调用、隐式intent等内容。

  • BeatBox

    通过这个可以震慑敌人的应用,继续深入学习fragment、媒体文件的播放与控制、主题以及drawable。

  • NerdLauncher

    通过个性化启动器的开发,深入学习intent以及任务的概念知识。

  • PhotoGallery

    通过开发从Flickr网站下载并显示照片的客户端应用,学习Android服务、多线程、网络内容获取服务等知识。

  • DragAndDraw

    一个简单的画图应用,通过它学习触摸手势事件处理以及创建个性化视图等知识。

  • Sunset

    一个漂亮的日落动画应用,通过它学习Android动画知识。

  • Locatr

    查询当前位置的Flickr图片并显示在地图上的应用。借此应用学习如何使用定位服务和地图。

挑战练习

大部分章末都配备有练习题。可借此机会学以致用,查阅官方文档,锻炼独立解决问题的能力。

强烈建议大家完成这些挑战练习。在练习过程中,尝试另辟蹊径,探索自己独特的学习之路。这有助于巩固所学知识,增强未来开发应用的信心。

遇到一时难以解决的问题,请访问论坛http://forums.bignerdranch.com寻求帮助。

深入学习

部分章末还包含一块名为“深入学习”的内容。这些内容针对相应章内的知识点,提供深入讲解或更多学习信息。本部分内容不属于必须掌握的部分,但还是希望大家有兴趣阅读并有所收获。

代码风格

有别于其他Android开发学习社区的编码风格,我们有着自己的判断与选择,主要体现在以下两个方面。

  • 在监听器代码部分使用匿名内部类

    这主要看个人倾向。我们认为,使用匿名内部类,代码可以更简练,监听器实现方法更一目了然。尽管在高性能要求的场景下,匿名内部类可能会有一些问题,但大多数情况下都很正常。

  • 自第7章引入fragment后,后续所有用户界面都使用它

    对于这一点,我们有充足的理由坚持。相信我们,使用得当的话,fragment就是Android开发人员手中的一大利器。一旦适应了它,也就没想象中的那么难用了。相比activity,fragment在创建和显示用户界面时明显具有更加灵活的优势,因此值得为此付出努力。

版式说明

为方便读者阅读,本书会对某些特定内容采用专门的字体。变量、常量、类型、类名、接口名和方法名会以代码体显示。

所有代码与XML清单也会以代码体显示。需要输入的代码或XML总是以粗体显示。应该删除的代码或XML打上删除线。例如,在下列实现代码里,我们删除了makeText(...)方法的调用,增加了checkAnswer(true)方法的调用。

@Override
public void onClick(View v) {
    Toast.makeText(QuizActivity.this, R.string.incorrect_toast,
                   Toast.LENGTH_SHORT).show();
    checkAnswer(true);
}

Android版本

本书主要针对当前广泛在用的各个系统版本(Android 4.1至Android 5.1)进行开发教学。虽然更老的系统版本仍有人在用,但对大多数开发者来说,为这部分人开发应用就是个赔本的买卖。 如果应用确实需要支持Android 4.1之前的系统版本(尤其是Android 2.2和Android 2.3),请参考本书第1版相关内容。

Google还会不断地发布新版本Android系统。请放心,Android能很好地向后兼容支持(详见第6章),即便有了新系统,本书所授技术和知识也不会过时。而且,通过forums.bignerdranch.com论坛,我们也会不断跟踪Android开发新动向,及时为读者提供开发指导和支持。

目录

  • 版权声明
  • 献词
  • 致谢
  • 如何学习Android开发
  • 开发必备工具
  • 第 1 章 Android开发初体验
  • 第 2 章 Android与MVC设计模式
  • 第 3 章 Activity的生命周期
  • 第 4 章 Android应用的调试
  • 第 5 章 第二个activity
  • 第 6 章 Android SDK版本与兼容
  • 第 7 章 UI fragment与fragment管理器
  • 第 8 章 使用布局与组件创建用户界面
  • 第 9 章 使用RecyclerView显示列表
  • 第 10 章 使用fragment argument
  • 第 11 章 使用ViewPager
  • 第 12 章 对话框
  • 第 13 章 工具栏
  • 第 14 章 SQLite数据库
  • 第 15 章 隐式intent
  • 第 16 章 使用intent拍照
  • 第 17 章 Master-Detail用户界面
  • 第 18 章 Assets
  • 第 19 章 使用SoundPool播放音频
  • 第 20 章 样式与主题
  • 第 21 章 XML drawable
  • 第 22 章 深入学习intent和任务
  • 第 23 章 HTTP与后台任务
  • 第 24 章 Looper、Handler和HandlerThread
  • 第 25 章 搜索
  • 第 26 章 后台服务
  • 第 27 章 broadcast intent
  • 第 28 章 网页浏览
  • 第 29 章 定制视图与触摸事件
  • 第 30 章 属性动画
  • 第 31 章 地理位置和Play服务
  • 第 32 章 使用地图
  • 第 33 章 material design
  • 第 34 章 编后语