《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

视频:《零基础学习Android开发》第一课 第一个Android程序

  同学们好!欢迎大家观看《跟陶叔学编程》系列节目,这是第一季《零基础学习Android开发》。在课程内容开始之前,先给同学们介绍一下这个课程的定位。

  受众群体:以非计算机专业零基础大学生与社会上编程爱好者为主体,兼顾对编程感兴趣的初、高中生。如果以前做过一些编程,但是对编程的相关知识还一知半解的,也可以通过个课程进行系统的学习。这个课程不是针对编程竞赛的辅导,是对应用软件编程的基础教学,是为了帮助编程爱好者能够开始实践做出自己想要的东西。

  本课程真正地面向零基础:

  • 没有学习过编程语言。我会完整地讲解Java语言的基本概念与用法。
  • 没有接触过编程开发。我会讲解一些计算机基本概念与原理,理清编程与计算机相关知识的关系,帮助打好开发的知识基础。
  • 没有使用过编程工具。我会介绍集成开发环境的用法与使用经验,并介绍开发中一些实用工具的使用方法,还提供一些基本的开发组织管理经验。

  学习目标:掌握编程基础知识与语言用法,了解安卓APP开发相关工具与流程,掌握编程相关知识的学习方法以便今后自学提高,明白编程进阶方向与路径为提升层次打好基础。

  学习内容:Java语言基础学习与使用,Android Studio开发工具及JDK与Android SDK使用,主流开放平台开发,面向对象思想与重构实践,版本管理工具使用,学习资源介绍与工具使用。

  教学方法:面向问题,实用为先。很多同学在学习编程的过程中可能会被其中海量的知识点吓到,动不动就来个英文缩写,什么API、SDK、XML、IDE之类的,看起来高深莫测的样子。要掌握这么多编程的相关知识,我们要有一个干净利落的切入角度。首先,我要问同学们一个问题:什么是知识?知识就是解决问题办法的总结。同学们接触到的所有知识都是为了解决某个问题才出现的,你知道了那个问题,明白了别人解决问题的思路,这个解决办法也就掌握了。很多同学陷入知识的海洋弄得云里雾里辨不清方向,就是因为不知道这些个知识是干嘛用的,不知道它们是为解决什么问题而出现的。而计算机技术里的很多知识更是这样,为了解决问题而出现,出现就是一大串。你不知道它要解决什么问题,就等着被绕晕吧。所以我会在讲课的过程中把编程中遇到的问题指出来,再告诉你这个问题是怎么解决的,而这个解决的办法就是所谓的“知识点”。我会替同学们解答“灵魂三问”:这有什么用?这该怎么用?怎么更好用?

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

有的同学会说了,一般最先提出的问题应该是:这是什么鬼?也就是应该灵魂四问:这是什么鬼?这有什么用?这该怎么用?怎么更好用?但是从我的经验总结,这是什么鬼其实一两句话就说清楚了,基本上所有人也都能够理解。反倒是这有什么用最让大家烦恼,也是它最让人失去学习的兴趣。没什么用的知识,对大多数人来说天然就没有吸引力。所有,我就精简一下,就是灵魂三问。

  同时我讲课不会先把一堆概念进行统一的灌输,而是从开发实例出发:因为我们要做个什么功能,然后我遇到了什么问题,通过解决这个问题,之后我们会掌握哪些知识。我不会在课程中堆砌没用的概念,而是围绕编程的实际需要给大家指出面临的问题、揭示解决问题的思路、理解前人提供给我们的知识。这个课程不可能覆盖编程中所有的知识,但只要大家掌握了这种学习的方法——面向问题的学习方法,今后的学习与工作中接触到新知识的时候,马上意识到这是某种问题的解决办法,并且从问题切入,相信很快就能把新知识理解并加以运用。

  总之,这个课程针对实战编程与主流开发方式,让同学们课程学习之后基本掌握编程,能够实现一些自己的需求。本课程定位为什么没有针对高考加分的竞赛编程学习?因为一来能够靠竞赛成功的毕竟是极少数,二来通过这些年来软件开发创新实践,可以发现最重要的是应用方面的需求,如果能够提出一种创新的应用模式,也就是提出一种广泛的新需求,并将其通过软件编程进行实现,是能够推进社会快速发展的。当然,新需求的实现也离不开底层复杂算法的支持。但是底层算法相对会稳定一些,而做需求的可以量很大很活跃。这样就像大海一样,海面上波涛翻滚,海面下就比较安静。而大量的需求的不断试错,将可以最终优胜劣汰出来更多伟大的软件产品。而我们通过本系列课程的学习,就是希望同学们获得利用软件来发明创造的能力,让你们能把自己的好想法用编程表达出来,而且这种编程是基本符合软件开发规律的也就是基本具备一定可行性的。说不定哪天新的伟大的软件就是在你们的手中产生的。另一方面,即使大家成不了比尔.盖茨、扎克伯格、雷军这样的软件大牛,我也希望同学们通过编程的学习开拓思路,增加看问题的新角度,或者为今后的职业选择打下一些实用的基础。

一、浅谈编程

1. 编程概念

  先了解编程的概念。百度百科上的定义是:编程,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

  为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

  从这个定义中可以看出编程是人与计算机的交流方式,交流的目的是调用计算机的资源,这些资源包括显示、声音播放、计算、存储、数据库、网络通信等。为了让计算机能够理解,必须使用编程语言。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

2. 编程语言

  编程语言大家可能听过很多,包括汇编语言、C/C 、Pascal、Basic、C#、Java、JavaScript、Python、ASP、PHP等,还有HTML、XML、SQL等。这些语言使用的都是英语,使用中文的编程语言有易语言。甚至有使用文言文的编程语言,名字就叫“文言编程语言”(wenyan-lang)。这是2019年底出现的。2019年还有个“木兰”语言闹了笑话的,这是有人把Python套了个皮结果被人揭发了。编程语言可以分为低级语言与高级语言,这里的高低不是指语言的好坏,而是指语言距离机器的远近,距离机器近的是低级,反之就是高级。

  这里先说汇编语言。汇编是最接近机器的语言,同学们可能听说过CPU的指令集。汇编就是直接使用的CPU指令集,在调用指令之前将数据在存储器中准备好,指令传给CPU进行运算后,获得数据决定如何使用,就是汇编语言的基本使用逻辑。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

而指令如何传输给CPU的,玩过芯片的同学可以很快理解。芯片的针脚很多,分为输入与输出(也有的兼做输入与输出),在输入针脚给出要运算的数据与指令的序号后,运算完成后输出针脚就可以获得结果。而这些数字结果可能被用于下一步的继续运算,也可能输出到输出设备如显示器、音箱等,最终向我们呈现出来。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

  我们一般接触到语言除了汇编之外的都是高级语言。高级语言中加入了复杂的组织形式,目的是为了接近人类的思考方式,方便开发者使用。当我们用高级语言编写完程序之后,这些程序都需要被“翻译”成汇编语言,因为机器只能理解汇编语言。这个过程就叫做“编译”,英文叫compile。(更准确地说机器只能理解机器码,也就是数字序列,但是汇编与指令是一一对应关系,这么说问题也不大)

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

3. 平台(Platform)

  高级语言为了让开发者使用更方便,对语言内容进行了丰富,加入了更多逻辑内容。对应地,计算机的资源也不能再像汇编编程时那样直接了,这些资源被“封装”起来,封装的原则是把一些固定在一起的指令组织在一起,成为被高级语言调用的接口,这类接口就是API,Application Programming Interface,即“应用程序编程接口”。而提供这些API的基础性软件称为“平台”,英文是platform。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

平台可以是操作系统如Windows、ios、Android、Linux、Unix、鸿蒙等,也可以是网络服务器如ASP服务器、PHP服务器、tomcat服务器等,还可以是互联网服务开放平台如微信小程序/小游戏开放平台、地图开放平台、翻译开放平台等。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

【说到这里,我要多说几句。在我开始学编程的时候,所有的编程相关的资源都是来自欧美的,语言啊、平台啊、开发工具啊,都是。但是这些年中国自己的资源越来越多了,像腾讯、阿里,还有华为都提供了开放平台以及相关工具。大家可以从这里看到国家的进步。可是有人会说国产的很多东西根上是还是源自欧美的某个开源项目,算不得我们的原创产品。这个问题我是这么看的。本来人类的技术进步就是在共同的基础上进行发展,如果已经有了一个基础自己还非要另搞一套,不仅是浪费在思维上也是幼稚的表现。以后同学们在自己编程的时候也要有这么一个意识,想实现什么功能,先到网上搜一下是否已经有了这个功能实现的代码。如果有了就直接拿过来,不需要自己从头搞一套。所谓“天下文章一大抄”,编程跟写文章是差不多的,能抄费那劲自己写干什么?有的同学会说知识产权保护,还有打官司什么的。你去抄那种别人愿意让你抄的不就完了吗?程序员其实是一个闷骚的团体,他们普遍都喜欢显摆自己做出来的东西,如果你用了他的东西并且夸他几句,他会有极大的满足。网上共享的免费资源其实是很多的,大家只要记住动手之前先搜索一下,省得去做无用功就行了。另一个角度,可以发现,之所以出现这些国产的开放平台,一方面是国内的技术公司认识到了开放的必要性,希望吸引到开发者为他们丰富平台上的应用。另一方面,经过这么多年的发展,我们在软件技术的应用上占领了一定的优势,我们国家创造出了一些领先的软件需求,这些需求拉动了消费,让这些公司赚到了钱,不然他们也没有动力去做开放平台这些工作。因此前面我说到了发现或创造需求是很重要的,如果哪天因为某个新应用软件的出现,又会开创出一个新的行业。我在做这个课程的时间,华为的鸿蒙已经公布,但还没有开放给普通开发者。如果鸿蒙能够成功,这应该是国内的软件行业的一个跨时代的重要事件。对华为的鸿蒙有很多质疑的声音,有善意的也有恶意的。我希望同学们对鸿蒙热情关注,保持乐观。学习技术要有一种开放的心态,对新生事物不要动不动就抗拒。不要使自己有一种“既得利益者”的心态,觉得新东西会威胁自己,也不要有一种“买办”心态,对自己国家的技术发展抵制或者鄙视。虽然国内的ICT行业,也就是Information and Communication Technology信息与通信技术行业(在我开始学编程的时候还是叫IT行业,现在把通信也加进去了),在发展的过程中曾经出现过不好的事,但要相信瑕不掩瑜,也要自信我们能够越做越好。而自信的底子就是我们在先进的需求领域是有优势的,新的需求会带动创新发展,给整个行业带来动力。】

  好了,转回来说平台。还有一些应用软件,因为提供了编程扩展功能,也可以纳入平台的概念。如Windows Office的Word、PPT、Excel,以及3D制作软件3DMax、流媒体软件Flash等都提供编程接口,甚至有专用的编程语言。

跨平台能力

  给大家介绍了这么多种平台,我们在开发中最常用的还是操作系统平台。而这些操作系统平台每个提供的API都是不同的,甚至不同操作系统的API调用时需要准备的数据的格式都是不同的。这就造成了为一平台上开发的软件在另一个平台上无法运行,比如为Linux开发的程序不能在Windows上运行。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

  解决这个问题有两种思路。一种是用虚拟机,在一种操作系统上用软件模拟另一种操作系统的环境,这样就可以运行另一种操作系统的程序。另一种思路则是用通用平台代替底层的操作系统平台,编程时只使用通用平台的API,程序运行的时候是处在通用平台的环境中,并将对通用平台的API翻译成对底层操作系统的调用,这种运行过程被称为“解释运行”。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

按照第二种思路出现了提供“跨平台开发”能力的平台,Java2平台就是典型的提供“跨平台开发”能力的平台,它分为J2SE、J2EE、J2ME三个版本,其专用的语言就是Java语言。

4. SDK(软件开发工具包)

  上面我们了解到了编程实际上就是用编程语言调用各种平台提供的API,也了解了各种能提供API的平台,那是否编程语言就直接使用平台的API呢?答案是否定的。举例来说,我们要开发Windows程序,可以用C语言,也可以用Pascal语言,还可以Basic语言,而这些语言的语法是不同的,调用API时的格式也是各不相同的,这就需要一个专门的工具去做这个事,这个工具就是SDK,全称是Software Development Kit,即“软件开发工具包”。SDK除了完成刚才所说的对API的组织与“翻译”工作(术语称为“封装”,Encapsulation),还提供丰富的常用代码集合,称为“库”,英文为library,缩写为lib。编程时通过使用库里的代码就可以直接利用前人的工作成果,节省很多的工作量(当然我们也可以制作自己的库,积累起来为今后的工作提高效率)。此外SDK还提供了很多的开发工具,其中很重要的是编译器,前面提到了“编译”的概念,而编译器则是完成这个工作的专门软件。我们在使用Java语言编程时,需要用到Java SDK,它的名称进行了简化,直接叫JDK。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

5. IDE(集成开发环境)

  有的同学可能看到过编程的过程,觉得编译不就是按一下开发工具上的“编译”按钮就完成了吗?跟SDK里的编译器有什么关系?其实你们看到的比较酷炫的开发工具,它的名称叫做IDE,全称是Integrated Development Environment,即集成开发环境。它只是将与编程相关的许多工具整合到了一起,给开发者节省了许多配置的时间。IDE的功能主要是3个。一是代码编辑。这个功能实际上用最简单的记事本也可以完成,只是缺少很多辅助功能,对开发者的要求会很高。二是编译与构建。编译前面说了,构建就是把代码与使用的资源进行连接,打包成可运行的文件。三是调试。调试是在一个受监控的环境下让程序运行,这样就可以随时观察程序是否按照预想在运行。后面的2个功能其实都是由SDK提供的,IDE只是把这些工具集合在一起而已。常用的开发工具是Eclipse、Visual Studio .net,这是通用IDE进行配置后可以开发多种平台多种语言的项目,还有专门的开发工具PyCharm(这是开发Python项目的)、Android Studio(这是专门开发Android项目的,我们的课程就使用它),微信小程序也提供了专用的IDE叫微信开发者工具。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

  到这里,我们小结一下。我们接触了编程的定义,知道了编程是人机交互的方式,人们通过编程语言去指挥计算机进行运算,调用计算机的资源。而计算机的资源是通过API来提供的,整合API的是平台,为了方便语言使用API,我们要用SDK。我们平常编程用的开发工具是IDE等等。同学们对这些术语不要心里犯怵,也不要强现在就记住,以后接触多了自然就理解并记住了。另外,我要给同学们一个建议,要学好编程必须要学好英文。因为大部分资料的原版是英文,虽然有很多汉化的资料,但是在翻译上往往存在术语不一致的问题反倒耽误时间。随着我国的发展,我也曾经想到是不是以后就不用学英文了,毕竟现在AI翻译也做得不错了,但是技术的完善还是有比较长的时间。中国人会英语其实也是一种优势,听过关于以前中美谈判的故事,因为中国代表团的人基本都会英语,美国人私下嘀咕什么中国人都能知道。可中国人私底下说什么,美国人要知道就费劲了。为了防中国听到,美国人都要跑到女厕所去,男的也去。还有一点,其实编程的英语没有那么难,同学们接触多了发现说来说去就是那些单词,还是比较好学的。

二、第一个Android程序

1. 编程环境准备

  好了,通过前面的介绍,我们对编程有了一个整体的了解,现在要开始实际的编程了。本课程使用主流的编程语言Java,针对现在应用最广泛的Android平台编写软件,开发工具用的是Android Studio,使用的开发用电脑上操作系统是Windows 10。同学们编程实践我多了以后,不排除会涉及其它语言与平台,但实际上各种语言各种平台是相通的,基本概念都差不多。同学们把一种语言一种平台的基础打好,脑子里有了知识的框架结构,就可以凭这个结构去找对应的知识点,这样学新东西上手就很快了。

  我们先下载IDE,网址是https://developer.android.google.cn/studio。下载完成后进行安装。安装时不用进行配置调整,一路Next就可以了。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

因为这是一个集成的开发环境,它把开发时需要的很多工具都一起安装了。因为我们是对Android平台进行开发,所以我们需要安装Android SDK。这个已经自动安装了。又因为我们是用的Java语言,我们需要安装Java SDK,即JDK。但是Android Studio装的是一个精简版本,即JRE,Java Runtime Environment,即Java运行时。

2. 第一个程序Hello World!

  在编程环境准备好之后,我们终于要开始第一次编程了。一般学习编程的第一个程序都是Hello World,因为这个程序既简单,又能给学习者直观的印象,还可以引入许多相关知识点。可以说Hello World对每个程序员的印象都是深入骨髓的,就像学英语的人对李雷、韩梅梅的印象一样。有一个关于程序员的笑话,说的是程序员学书法,他拿着毛笔蘸饱了墨舔好了笔,挥毫写下了第一幅字:Hello World!

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

创建项目

  我们现在开始做一个Android的Hello World。打开Android Studio(以后我们可以简称为AS,也可以用IDE来称呼它,因为我们的课程不会用别的IDE),因为我们没有创建任何项目(Android的开发文件用项目Project来进行管理),可以看到Welcom界面:

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

点击Start a new Android Studio project,弹出Create New Project对话框:

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

对话框要求你选择一个项目模板,选择“Empty Activity”(这个模板上只有一个文本,没有别的内容)后点击“Next”按钮:

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

在Name部分将项目取名为“Hellow World”,点击“Finish”按钮,项目创建完成,进入IDE主界面:

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

默认的界面字体比较小,我们可以选择File>Setting…,找到Editor下的Font进行调整。我习惯的是字体选择Courier New,大小为20:

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

认识AS界面

  我们回到AS主界面,可以看到主界面由3个部分组成,分别是编辑器、左右边显示为标签的多个工具窗口、下边的信息输出窗口。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

  编辑器就是我们平常敲代码的地方。AS会提供很多辅助功能,在我们敲代码时给各种提示、帮助添加引用、自动生成代码、自动调整格式等。

  工具窗口能显示很多项目的信息,也提供配置的便捷入口。最常用工具窗口是项目窗口,默认在左边打开的就是它。在这里可以找到我们要编辑的各种文件。它有几种不同的显示形式,默认的是Android。

  输出窗口会给出项目构建、运行、调试时的很多有用的信息。工具窗口与输出窗口都可以点击“-”将其隐藏。双击编辑器上方的标签可以获得最大的编辑界面,再次双击就可恢复。

  IDE会给编程提供很多方便,不需要我们从零开始去搭建项目。因此我们创建的这个Empty的项目其实并不是什么都没有,它已经有了完整的结构。我们在左边的项目工具窗口中点击打开app>java文件夹,可以看到有3个文件夹,后面2个文件夹是测试用的,现在先不用管它们,第一个文件中的MainActivity就是代码文件,也是程序的主入口。在下面的res>layout文件夹的activity_main.xml,点开它会发现我们熟悉的程序的界面。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

这个文件就是界面布局文件。在编辑器里它有3种视图,一种是Design,即设计视图,另一种是Text,即文本视图,还有一种设计与文本对照这幅图。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

在文本视图里我们可以看出来,界面实际上是用标记语言来定义的,这里自动生成了一个TextView的标记,它在界面上显示为一个文本。它的android:text部分的内容自动生成的就是“Hello World!”,我们在设计视图看到的文字,就是由这个标记来规定的。

  因为IDE给我们做了很多工作,所以现在这个Hello World项目本身已经是个完整的程序,我们可以直接运行它。点击工具栏上绿色的三角形Run 'app'。这时会出现一个提示:Error running 'app': No target device found. 这是因为Android的程序需要运行在手机的Android系统上,而我们编程所用的PC上是没有Android运行环境的,这就需要使用虚拟机来提供一个模拟手机的运行环境。我们先要配置一个Android虚拟机,选择菜单Tools>AVD Manager(AVD就是Android Virtual Device,安卓虚拟机):

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

点击Create Virtual Device…:

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

可以看到各种设备的列表,我们在Phone中选择一个手机类型,比如选择Pixel 2,这个虚拟机不会占用太大的PC资源,速度相对快一些。点击Next。

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

这个对话框是选择操作系统的镜像文件,默认的是当前最新的Android系统版本,不用改它。点击Next,在最后一个确认对话框中点击Finish即完成虚拟机的配置。

  我们再次点击工具栏Run按钮。这里有的同学的机器可能出现一个提示,要求你打开BIOS的Secure Virtual Machine开关,这需要你重启计算机进入BIOS进行设置。同学们可以在网上找一下相关介绍自行操作,这里就不多做介绍了。虚拟机启动后,程序被拷贝过去安装并开始运行。效果如图所示:

《零基础学习Android开发》第一课 第一个Android程序(0基础学android开发)

  同学们可以看到这个程序很简单,就是在界面上显示了一行Hellow World!。但是简单归简单,这是第一单。从这一刻开始,同学们已经完成了第一个Android程序了,恭喜!

  这次课虽然大家一行代码也没有敲,但是我们还是学到了许多重要的基础知识点,这里总结如下:

  1. 计算机语言是人们用来调用计算机资源的媒介,语言分为高级语言与低级语言,低级语言更接近机器,高级语言更接近人类思维。
  2. 计算机资源被不同的平台进行了组织,并以API的形式提供出来,供计算机语言进行调用。在平台与各种语言之间还有SDK进行衔接工作。
  3. IDE是我们开发时直接用到的工具,它集成了许多工具,使得编程的效率有了很大提高。使用IDE也使得编程的底层复杂性对开发者屏蔽,让开发者专注于功能的实现。
  4. Android的官方开发IDE是Android Studio,一般使用Java语言进行编程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月7日 上午10:00
下一篇 2023年4月7日 上午10:16

相关推荐