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

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

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

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

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

  • 没有学习过编程语言。我会完整地讲解Java语言的基本概念与用法。
  • 没有接触过编程开发。我会讲解一些计算机基本概念与原理,理清编程与计算机相关知识的关系,帮助打好开发的知识基础。
  • 没有使用过编程工具。我会介绍集成开发环境的用法与使用经验,并介绍开发中一些实用工具的使用方法,还提供一些基本的开发组织管理经验。
  •   学习目标:掌握编程基础知识与语言用法,了解安卓APP开发相关工具与流程,掌握编程相关知识的学习方法以便今后自学提高,明白编程进阶方向与路径为提升层次打好基础。

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

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

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

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

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

    一、浅谈编程

    1. 编程概念

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

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

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

    2. 编程语言

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

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

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

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

    3. 平台(Platform)

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

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

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

    跨平台能力

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

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

    按照第二种思路出现了提供“跨平台开发”能力的平台,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。

    5. IDE(集成开发环境)

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

    二、第一个Android程序

    1. 编程环境准备

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

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

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

    2. 第一个程序Hello World!

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

    创建项目

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

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

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

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

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

    认识AS界面

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

    在文本视图里我们可以看出来,界面实际上是用标记语言来定义的,这里自动生成了一个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,安卓虚拟机):

    点击Create Virtual Device…:

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

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

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

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

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

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

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2020年3月13日
    下一篇 2020年3月13日

    相关推荐