Android编程权威指南(第4版)
上QQ阅读APP看书,第一时间看更新

如何学习Android开发

对新手来说,学习Android开发一开始会很难。就像初次踏入异国他乡一样,即使会说当地语言,一开始也绝不会有舒服自在的感觉。周围人习以为常的东西你不能理解,原有的知识储备在新环境下也完全派不上用场。

Android有自己的语言文化——使用Kotlin或Java语言(或者两者兼而有之)。但要深入理解Android,仅掌握Kotlin或Java还不够,你还需要学习诸多新理论和新技术。涉足陌生领域时,有个向导会很有帮助。

这就是我们的作用所在。在Big Nerd Ranch,我们认为,要成为一名Android开发人员,你必须:

  • 着手开发一些Android应用;
  • 充分理解你的Android应用。

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

我们的教学方法是:在学习理论的同时,就着手运用它们开发实际的应用,而非先学习一大堆理论,再考虑如何将其应用于实践。读完本书,你将具备必要的开发经验和知识。以此为起点,深入学习,你会逐渐成长为一名合格的Android开发者。

阅读前提

使用本书,你需要熟悉Kotlin语言,包括类、对象、接口、监听器、包、内部类、对象表达式以及泛型类等基本概念。

如果不熟悉这些概念,没翻几页你就会看不下去了。对此,建议先放下本书,找本Kotlin入门书看一看。市面上有很多优秀的Kotlin入门书,你可以基于自己的编程经验及学习风格去挑选。或许你可以看看《Kotlin编程权威指南》1这本书。

1此书已由人民邮电出版社出版,详情请见图灵社区。——编者注

如果你熟悉面向对象编程,但Kotlin知识掌握得不牢靠,那么阅读本书应该不会有太大问题。碰到Kotlin语言点,我们会进行简单的解释。不过,在学习的过程中,还是建议手边备上一本Kotlin参考书,以方便查阅。

第4版有哪些变化

第4版是一次重大更新,每一章的内容都做了修改。要说最大的变化,当数应用开发语言从Java换成了Kotlin。因为这个缘故,我们私下称第4版为“Android 4K”。

另一个重大改变是全面引入了Android Jetpack组件库。第4版使用Jetpack库(又称AndroidX)代替了原来的支持库。而且,只要有可能,我们就会整合使用全新的Jetpack API。例如,第4版会使用ViewModel来处理设备旋转的UI状态持久化问题,使用Room和LiveData来实现数据库及其数据查询,使用WorkManager来调度后台工作,等等。在学习过程中,你还会在一个个项目的开发中看到更多Jetpack组件的应用。

为重点关注现代Android应用是如何开发的,除了Android框架本身以及Jetpack内的API,第4版开始使用第三方库。例如,书中优先使用Retrofit及其依赖库,而非原来的HttpURLConnection和一些低级别的网络API。相比之前的版本,这属于很大的改变,我们认为这有助于读者更好地适应专业的Android应用开发。而且,书中选用的这些第三方库也是我们为客户开发应用时日常使用的。

Kotlin与Java

Kotlin获Android开发官方支持是在2017年的Google I/O大会上宣布的。在那之前,一直是民间Android开发者力量在推动使用Kotlin。自2017年官宣后,Kotlin已被人们广为接受,并迅速成为大多数开发者进行Android开发的首选语言。在Big Nerd Ranch,所有的应用开发项目都采用Kotlin,即使是过去那些大量使用Java的遗留项目。

转向使用Kotlin这股潮流依然浩荡向前。Android框架团队已开始向平台遗留代码加入@nullable注解。他们不断发布用于Android开发的Kotlin扩展。本书撰写时,Google正忙于向Android官方开发文档中添加Kotlin示例和支持。

Android框架最初是使用Java开发的,也就是说,你用到的大部分Android类是用Java编写的。幸运的是,Kotlin支持与Java互操作,所以使用Kotlin开发不会有任何问题。

本书选择使用Kotlin API,即使这些API背后的开发语言是Java。无论你喜欢Kotlin还是Java,本书传授的都是如何开发Android应用。你所学的Android平台上的开发经验和知识,对这两种语言都适用。

如何使用本书

本书不是一本参考书。我们的目标是帮你跨越学习的初始障碍,进而充分利用其他参考资料和实例类图书来深入学习。本书基于Big Nerd Ranch培训机构的五天教学课程编写而成,从基础知识讲起,各章内容循序渐进,所以建议不要跳读,以免学习效果大打折扣。

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

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

(1) 和朋友或同事组成阅读小组。

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

(3) 参与本书论坛的交流和讨论。

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

本书内容

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

  • GeoQuiz

    本书中的第一个应用,用来学习Android应用的基本组成、activity、界面布局以及显式intent。

  • CriminalIntent

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

  • BeatBox

    一个可以吓退对手的应用,用来学习媒体文件的播放与控制、MVVM架构、数据绑定、单元测试、主题以及drawable资源。

  • NerdLauncher

    一个个性化启动器,用来深入学习intent、进程以及Android任务。

  • PhotoGallery

    一个从Flickr网站下载照片并进行显示的客户端应用,用来学习后台任务调度、多线程、网络内容下载等知识。

  • DragAndDraw

    一个简单的画图应用,用来学习如何处理触摸手势事件以及如何创建个性化视图。

  • Sunset

    一个漂亮的日落动画应用,用来学习Android动画。

挑战练习

大部分章末配有练习题。你可借此机会实践所学,查阅官方文档,锻炼独立解决问题的能力。

强烈建议你完成这些挑战练习。在练习过程中,不妨尝试另辟蹊径,这有助于你巩固所学知识,增强未来开发应用的信心。

若遇到一时难以解决的问题,请访问本书论坛求助。

深入学习

部分章末还包含“深入学习”一节。这一节对该章内容进行了深入讲解或提供了更多信息。这一节不属于必须掌握的部分,但希望你有兴趣阅读并有所收获。

版式说明

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

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

trueButton.setOnClickListener { view: View ->
    Toast.makeText(
        this,
        R.string.correct_toast,
        Toast.LENGTH_SHORT
    )
        .show()
    checkAnswer(true)
}

Android版本

本书教学主要针对当前广泛使用的各个系统版本(Android 5.0 至 Android 11.0)。虽然更老的系统版本仍有人在用,但对于大多数开发者来说,为支持这些版本而付出努力得不偿失。

如果应用确实需要支持 Android 5.0 之前的系统版本,请参考本书第3版(Android 4.4及以上版本)、第2版(Android 4.1及以上版本)和第1版(Android 2.3及以上版本)的相关内容。

新版本的Android系统还会不断发布。请放心,Android支持向后兼容(详见第7章),即便有了新系统,本书所授知识也不会过时。我们也会在本书论坛上不断跟踪Android开发新动向,及时为你提供开发指导和支持。