android开发教程ppt模板

简介 相关

截图

android开发教程ppt模板

简介

这是android开发教程ppt模板,包括了项目任务,项目要求,Android的发展及历史,第一个应用程序,项目框架分析,Android四大组件介绍等内容,欢迎点击下载。

android开发教程ppt模板是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.

第1章 Android开发入门 1 项目任务: 通过学习Android相关历史及开发环境的搭建,完成第一个简单应用程序的设计与开发,并理解Android项目中各个文件及目录的功能。 2 项目要求: 掌握Android开发环境的搭建方法。 在Eclipse软件上设计并运行自己的第一个程序。 了解Android项目的结构及各个文件的功能。 掌握Android系统四大组件的基本功能。 1.1 Android的发展及历史 1.1.1 Android系统简介 Android是一种以Linux为基础的开放源码操作系统,它主要应用于便携设备。Android股份有限公司于2003年在美国加州成立,在2005年被Google收购。2012年的数据显示,仅正式推出四年操作系统的Android已经超越称霸十年的诺基亚Symbian系统,2011年后已经和苹果IOS系统一起,跃居成为全球最受欢迎的智能手机平台之一。 1.1 Android的发展及历史 Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l"Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L"ève future)中。他将外表像人的机器起名为Android,于是就有了这个可爱的小机器人。 1.1 Android的发展及历史 Android 1.1 是在2008年9月发布的第一款Android系统,2008年9月22日,美国运营商德国T-Mobile在纽约正式发布第一款Android手机——T-Mobile G1。该款手机为台湾宏达电(HTC)代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbit/s ,并支持Wi-Fi。 Android 1.5操作系统代号Cupcake(纸杯蛋糕),发布时间为2009年4月30日,以甜品命名的系统是从Android 1.5开始,该系统主要的更新在于采用了WebKit技术的浏览器,它支持在页面中进行复制/粘贴以及搜索等功能;系统还支持立体蓝牙耳机连接,改善了自动配备的性能,使其更加稳定。 1.1 Android的发展及历史 Android 1.6操作系统发布时间为2009年9月15日,该系统代号Donut(甜甜圈),主要更新是支持更高的屏幕分辨率,支持OpenCore2引擎;支持CDMA网络以及优化拍照程序。 Android 2.0系统发布时间为2009年10月26日,随后的升级版Android 2.0.1、Android 2.1均称为Eclair(松饼),该系统优化了硬件支持,支持更高的屏幕分辨率;系统界面也发生了变化,运行更流畅;支持HTML5。 1.1 Android的发展及历史 Android 2.2操作系统发布时间为2010年5月20日,与随后的升级版Android 2.2.1统称为Froyo(冻酸奶)。该系统主要是对系统进行优化,增加了App2Sd功能。 Android 2.3操作系统发布时间为2010年12月7日,该系统代号为Gingerbread(姜饼),这也是目前国内市场占有率最高的系统。该系统优化了系统界面,使其操作更加流畅;加入复制/粘贴功能;支持前置摄像头以及NFC技术。 1.1 Android的发展及历史 Android3.0/3.1/3.2操作系统是谷歌在2011年中发布的,3.X系列的版本统称为Honeycomb(蜂巢)。这一系列的更新主要是针对平板设备,让Android系统可以更好的支持平板。 在2011年10月19日,Google发布了全新的Android4.0操作系统,系统代号为Ice Cream Sandwich(冰激凌三明治),该系统将手机与平板设备进行整合,拥有全新的UI界面以及Linus内核,支持虚拟按键。 Android 4.1操作系统发布时间为2012年6月28日,系统代号为Jelly Bean(果冻豆),Android4.1操作系统引入了三重缓冲显示技术,让界面更加流畅,功能方面也有增加。 1.1 Android的发展及历史 1.1.3 Android系统框架架构 1. Linux 内核(Kernel) Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。 1.1 Android的发展及历史 2. 系统运行库(Libraries) 程序库 Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:媒体库、Surface Manager 、LibWebCore、SGL 、3D libraries、FreeType 、SQLite 1.1 Android的发展及历史   Android 运行库 Android 包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。 每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由Java编译器编译,然后通过SDK中 的 “dx”工具转化成.dex格式,并由虚拟机执行。Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。 1.1 Android的发展及历史 3. 应用程序框架(Application Framework) 开发人员也完全可以访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块,并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。 1.1 Android的发展及历史 隐藏在每个应用程序后面的是一系列的服务和系统,其中包括: 视图(Views) 内容提供器(Content Providers) 资源管理器(Resource Manager) 通知管理器 (Notification Manager) 活动管理器( Activity Manager) 1.1 Android的发展及历史 4. 应用程序(Applications) Android系统会和一个核心应用程序包一起发布,该应用程序包包括 Email 客户端、SMS 短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的,另外我们从网络下载的,或者我们自己开发的应用程序也都属于这一部分。 1.2 Android开发环境搭建 1.2.1 Android开发简介 Android (安卓)是Google 开发的基于Linux 平台的开源手机操作系统。Android的应用程序一般使用Java语言编写,当然也有NDK的开发方式,会涉及C/C++。在开发过程中,有众多的样本应用和开源应用提供下载,并且IDE(集成开发环境)使用Eclipse,这种集成开发环境有丰富的源代码模板,用户可以在源码的基础上进行程序的编写,这使得程序开发的难度大为降低。 1.2 Android开发环境搭建 1.2.2 安装JDK 进入网址http://www.oracle.com/technetwork/java/javase/downloads/index.html ,如图所示: 1.2 Android开发环境搭建 作为开发人员,这里选择JDK而不是JRE,因此当单击JDK的图标并选择相应版本后,JDK就开始下载了。32位的Windows系统用户点击jdk-7u7-windows-i586.exe,64位的Windows系统用户点击jdk-7u7-windows-x64.exe。 下载后可以得到.exe的可执行程序,这是一个安装程序,用户只需要运行该程序就可以完成JDK的安装。当然用户在安装过程中可以指定安装的路径,但是一般推荐使用默认路径(一直单击下一步)安装即可,最后检查是否安装成功。 1.2 Android开发环境搭建 单击计算机的“开始”,选择“运行”,在出现的对话框中输入“CMD”命令,打开CMD窗口,在CMD窗口中输入“ java –version”,如图所示,如果屏幕出现下面的代码信息,说明JDK已经安装成功了。如果不成功,通常是环境变量设置不正确,现在Windows平台的JDK都是做好的安装包,一般正常安装后都没有问题。 1.2 Android开发环境搭建 1.2.3 安装Eclipse 第一次安装Android开发平台,现有一个非常方便的方法,在android开发网站(http://developer.android.com/sdk/index.html)上直接下载一个ADT综合包文件(adt-bundle-windows-x86-20130219.zip),这个包文件内有必要的Android SDK的组件和一个内置了ADT(Android Development Tools )插件的新版本Eclipse 。下载完成后,解压缩到一个目录下,打开其中的Eclipse目录,找到eclipse.exe这个文件发送到桌面后,就可以直接开发程序了(可以省略下面的Eclipse安装、SDK下载和配置以及ADT安装三个步骤)。 1.2 Android开发环境搭建 如果你已经安装了部分开发工具,或者你想一步一步的进行安装配置,具体的方法如下面所述。Eclipse下载的主页面为:http://www.eclipse.org/downloads/,如图所示,Eclipse的页面默认版本为Windows平台,如果想选择其他平台例如Linux平台,鼠标点击右上角的下拉框进行选择(共三种平台Windows、Linux和Mac OS X)。默认版本为当前正式最新发布的正式版本3.7.2,代号Indigo。如果想下载以前的老版本,可以鼠标点击左上方的Older Versions链接去下载老版本。这里列表列出了多个版本,是因为Eclipse具有良好的扩展性,因此很多可用于Eclipse的应用插件被开发出来,为了节省用户下载相关插件的工作量,所以对目前常用的几类开发插件进行了打包处理。 1.2 Android开发环境搭建 这里稍微介绍一下:Eclipse Classic是标准的Eclipse版本,只包括基本的插件,不包括相关的特殊插件,通常称之为最干净的Eclipse版本,一般建议下载并安装此版本。下载时,仍需注意Windows的版本问题,建议和JDK版本相匹配。 下载后的文件是zip压缩格式,解压缩后就可以直接运行eclipse.exe这个可执行文件,因为它经常使用,所以建议在桌面上建立一个Eclipse快捷方式。 1.2 Android开发环境搭建 1.2.4 配置Android开发环境 在Eclipse中配置Android开发环境主要包括ADT(Android Development Tools)和Android SDK(Android Development Kit)两部分。 首先进行Android SDK的下载,下载网址是http://developer.android.com/sdk/index.html 。如图所示,进行下载的设置。 1.2 Android开发环境搭建 点击“Download the SDK for Windows”按钮进行下载,得到installer_r20.0.3-windows.exe安装程序。下载后按步骤进行安装,选择合适的目录。安装结束后,会出现SDK更新页面,建议选择SDK4.1(API 16)版本和SDK2.3.3(API10)的相关目录进行更新,建议Android 开发文档(Documentation for Android )和例程(Sample for SDK)一定要安装,这些内容可以为用户提供很多参考。这个更新界面也可以在Eclipse中安装好ADT插件后,利用打开SDK管理器的方法打开, 安装完SDK后,我们必须要把SDK关联到Eclipse开发环境中去,也就是让在Eclipse中开发的项目能找到所用的SDK相关文件。 1.2 Android开发环境搭建 从Eclipse的菜单栏中选择“Window”→“Preferences”命令,打开“Preferences”窗口,如图1-7所示。单击左边的“Android”,然后再单击“Browse”按钮设置Android SDK的位置,即前面所提到的Android SDK安装后的位置,如图所示,即完成了SDK的路径设置过程,即关联过程。 1.2 Android开发环境搭建 这里有个小经验,建议大家把Eclipse文件夹和 SDK文件夹都放到D盘的同一个目录(比如取名为android)下,如图所示。另外,路径名称(包括项目名、开发所涉及的文件夹名等)中不建议出现中文字符,避免开发时发生意想不到的错误。 1.2 Android开发环境搭建 然后进行ADT安装:在http://developer.android.com/sdk/eclipse-adt.html#installing中给出了如何安装的详细说明,其实核心思想就是一个如何设置ADT的安装链接。ADT的安装有离线下载安装和在线安装两种方法,这里介绍在线安装的方法。 1.2 Android开发环境搭建 在Eclipse的菜单中选择“Help”->“Install New Software”命令,如图1-8所示,单击右上方的“Add”按钮,在Location栏目中加入ADT的下载地址:http://dl-ssl.google.com/android/eclipse/ ,Location上方的Name栏中可以填写android。然后点击“OK”按钮。如图所示: 1.2 Android开发环境搭建 如果成功访问Google的相关服务器,则会显示获取的ADT插件信息,使用鼠标选中其中的复选框,建议全部进行选择。 鼠标点击“Next”按钮,会显示ADT的详细情况,继续用鼠标点击“Next”按钮,会出现询问用户是否同意使用License,缺省的情况是不同意,此时下边的“Finish”按钮为灰;如果用户同意使用License,则选中同意License选项,然后点击 “Finish”按钮,就进入下载安装状态。 1.2 Android开发环境搭建 下载安装成功后会提示重启Eclipse,点击“Restart Now”按钮即可重启Eclipse。重新启动Eclipse后,状态栏上会增加两个图标,一个是SDK管理器,一个是AVD管理器,这两个图标和Windows菜单中的两个子菜单功能完全系统,如图所示,至此,Android开发环境搭建工作就全部完成了。 1.2 Android开发环境搭建 1.2.5 创建AVD 当用户在开发Android程序,或者在完成一个Android程序之后,一般需要检测一下程序运行的结果,如果用户没有支持Android平台的3G 手机,该如何测试呢?SDK为我们解决了这一问题,在SDK中集成了Android 虚拟设备AVD(Android Virtual Device),利用AVD管理器,用户可以创建各种模拟器(Emulator),并利用模拟器获得跟真实手机基本相同的体验。但是在涉及一些手机硬件开发(如蓝牙、GPS、相机、NFC等)时,模拟器就无法实现相关的硬件模拟功能,所以此时程序员必须配备具有对应硬件功能的Android手机,才能完成开发任务。 1.2 Android开发环境搭建 在Eclipse中创建AVD时,首先需要利用AVD 管理工具来创建一个AVD,点击Eclipse 工具栏上的AVD Manager图标,弹出如图所示的对话框。 1.2 Android开发环境搭建 这里显示已经有4个AVD模拟器,它们是作者平时使用的模拟器。用户可根据项目需求选定目标AVD,然后点击start按钮,就开始启动选定的AVD。如果用户需要建立一个新的AVD,首先点击New按钮,进入创建界面如图所示,输入名称“newavd”, Target选择Android4.1,同时输入模拟器SD的容量:256,注意单位为兆(MiB),SD的容量不建议给太大,如1G、2G等,因为每次多建一个AVD,AVD安装时所在的盘的剩余容量就会做相应的减少,在一般的应用开发中,256M就足够了。 1.2 Android开发环境搭建 上图中的Hardware选项,是对模拟器硬件方面的支持,可以增加一些设置,这里增加一个键盘支持的设置,即将来可以利用PC机的键盘来实现模拟器AVD键盘的输入,方便程序员的调试。如图所示,点击“New”按钮,在Property下拉列表框中选择KeyBoard support选项,单击“OK”按钮,在Keyboard support的值(Value)选项把no改为yes,如图所示,即完成了对键盘支持的设置工作。 1.2 Android开发环境搭建 完成以上步骤后,点击对话框下方的Create AVD 按钮,就完成了AVD的创建工作。从图中可以看出,增加了一个名称为newavd的模拟器AVD。选中newavd 后,单击Start按钮,即可启动最新创建完成的模拟器AVD。 1.2 Android开发环境搭建 第一次启动AVD会需要较长的时间,实际开发时,建议大家不要频繁关闭和重启AVD。启动后的AVD如图所示。在模拟器界面的左上角,有5554:newavd这个内容,它所代表的含义是什么呢?每个模拟器都被绑定到“127.0.0.1”这个IP 地址上,而5554 代表该模拟器所绑定的端口号,也就是说,该模拟器的唯一标识地址是“127.0.0.1:5554”。同一台PC中启动第二个模拟器所绑定的端口号是5556,端口号可以作为模拟器的手机号使用,在两个或多个模拟器之间可以通过端口号进行通信,如拨打电话,发送短信等等。 1.2 Android开发环境搭建 Android手机由于品牌、型号众多,所以屏幕的尺寸也有很多。屏幕尺寸越大,可视范围就越大,同时由于所有Android手机均为可触摸屏幕,可触摸区域即为操作区域,所以屏幕越大,可操作区域也越大。在使用手机玩游戏和观看视频等方面,大尺寸手机优势明显。此表给出了当前流行的一些手机屏幕的分辨率。 1.2 Android开发环境搭建 模拟器左侧的部分为手机桌面,每次启动模拟,手机都是处于锁定状态的,通过单击鼠标图标并拖动即可解锁。模拟手机的默认语言是英语,如果希望在手机上显示中文等语言,需要对模拟器的语言设置进行修改。另外时间是国际标准时间,和北京时间有8个小时的时差,如果需要修改成北京时间,则可以在模拟器设置选项中进行系统的语言及时间设置,由于这些设置和真实手机完全相同,这里就不多介绍了,同学们可以自己摸索。 1.3 第一个应用程序 1.3.1 创建第一个应用程序项目Project 搭建好开发环境后,下面在Android 平台上开发并运行第一个项目HelloAndroid。首先启动Eclipse,打开新建项目的向导,一种方式是“File”->“New”->“Project”…|“Android”-> “Android Application Project”,另一种方式是“File”->“New”->“Android Application Project”,执行结果都是相同的,如图所示: 1.3 第一个应用程序 当打开新建项目向导后,出现对话框如图所示,首先需要确定应用名称Application Name、项目名称Project Name、包名Package Name以及最低支持版本等信息。 1.3 第一个应用程序 应用名称是Android程序在手机中显示的名称,这里采用HelloAndroid作为名称,当然也可以使用如“我的第一个Android应用程序”这样包含中文的应用名称。工程名和包名必须唯一,不能与已有工程的工程名和包名重名。包名是包的命名空间,需要遵循Java中包的命名规则。包名由2个或多个标识符组成,中间用点隔开。Java包的名字都是由小写单词组成,每一名Java程序员都可以编写属于自己的Java包。为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包名之前加上唯一的前缀,由于互联网上的域名是不会重复的,所以程序员一般采用自己在互联网上的域名作为自己程序包的唯一前缀。例如:cn.edu.siso.hello,一般公司命名则会以“com.公司名.项目名”的方式命名。 Build sdk 是目前开发项目所选用的SDK版本,它默认是Android4.1 (API 16),mini SDK则是程序开发后所支持的最低版本,当前选择为API 9:Android 2.3。 1.3 第一个应用程序 设置好以上信息后,单击“Next”按钮,进入启动图标的设置界面,这里可以设置启动图标的显示图片及颜色,本例题均采用默认值,然后直接单击“Next”按钮,进入创建Activity的对话框。在Activity界面仍旧采用默认值,单击“Next”按钮后进入创建新的空白Activity的对话框。在这个对话框中需要设置Activity Name和Layout Name。Activity Name就是项目中Java源代码的文件名,也就是类名,Activity Name的命名必须遵循Java类名的命名规则。Layout Name就是项目中布局文件的名称,注意不能有大写字母出现。本页也可以采用默认值,直接点击Finish按钮后结束项目的创建。 1.3 第一个应用程序 项目向导自动创建完成了项目所需要的基础文件及目录结构,用户能看到如图所示的内容。单击“run”图标按钮,运行此程序,选择Run as:Android Application后,启动选定的AVD,第一次启动AVD时间稍长,启动后模拟器进入的是锁定状态,必须解锁后才能运行程序,第一个新建项目的界面如图所示。 1.3 第一个应用程序 1.3.2 修改显示内容 打开项目中res->values->strings.xml文件,如图所示,对其中的name=“hello_world”所对应的内容部分进行修改,修改为“这是我的第一个Android应用程序”,保存后再次运行程序,即可看到了如图所示的界面。 1.4 项目框架分析 1.4.1 HelloAndroid项目结构 在建立HelloAndroid程序的过程中,Android系统在Eclipse中会自动建立一些目录和文件,一个项目的框架如图所示。其中有些文件有着固定的作用,有的允许修改,有的不允许修改。了解这些文件及目录的作用,对Android应用程序开发有着非常重要的作用,下面对这些文件分别进行介绍。 1.4 项目框架分析 src/ 是用于存放开发人员自己编写的Java 源代码的包。 gen/ 该目录不需要开发人员维护,但它又是非常重要的目录。该目录用来存放由Android 开发工具所生成的目录。该目录下的所有文件都不是用户创建的,而是由ADT 自动生成的。该目录下的R.java 文件非常重要,后面会详细的介绍。 android 4.1/ 存放Android 自身的jar 包。 1.4 项目框架分析 Android Dependencies/ 是android开发过程中一些依赖的包,它也是新版本的ADT才增加的目录。它修改了第三方jar的导入方式,之前可以在工程里面做关联,并在工程上自动添加ReferenceLibrary。在新版本的ADT环境下,只需要在工程目录下新建libs文件夹(注意是libs不是lib),然后将第三方的jar复制进去,Eclipse就会自动将这个jar添加到Android Dependencies文件夹下,而不必再通过BuildPath去修改,也不需要Reference Library。另外,如果多个工程有关联的话,比如A工程设置为IsLibaray,B工程要引入A工程的时候,也会自动将A工程编译生成的jar放到Android Dependencies文件夹下。 1.4 项目框架分析 assets/ 该目录用来存放应用中用到的类似于视频文件、MP3等一些媒体文件,此目录中的资源不能够被R.java文件索引,一般为空。 res/ res是resource 的缩写。我们称该目录为资源目录。该目录可以存放一些图标、界面文件、应用中用到的文字信息等内容。 AndroidManifest.xml文件是功能清单文件,该文件列出了应用中所使用的所有组件,如“activity”,以及后面要学习的广播接收者、服务等组件。 default.properties文件一般也不需要手工更改。该文件存放了项目对应的一些环境配置,如应用要求运行的最低Android 版本。 1.4 项目框架分析 1.4.2 资源res目录 资源是Android 应用程序不可或缺的部分。资源中存放了会被应用到程序里面的一些外部元素,比如图片、音频、视频、文本字符串、布局、主题等。每个Android应用程序包含一个资源目录(res/)和资产目录(assets/),但资产不经常被使用,因为它们的应用很少,仅在需要读取原始字节流时才需要保存数据在assets/目录。Res/和assets/目录均在Android 项目树的顶端,和源代码目录(src/)处在同一级上。资源和资产从表面上看没多大区别,不过总体上来说,在存储外部内容时资源用得更多。他们之间真正的区别在于任何放置在资源目录里的内容都可以通过应用程序的R 类访问,这是被Android 编译过的。而任何存放在资产目录里的内容都将保持它的原始文件格式,为了读取它,必须使用AssetManager以字节流的方式进行读取。所以保持文件和数据在资源中(res/)中会更方便访问。 1.4 项目框架分析 资源将最终被编译到APK 文件里,Android 创建了一个被称为R 的类,因此在Java代码中可以通过它关联到对应的资源文件。R 类中所包含的子类的命名由res/目录下的文件夹名称所决定。 res/目录下有4个dawable文件夹——drawable-*dpi,它们的区别只是将图标按分辨率高低来放入不同的目录。drawable-hdpi用来存放高分辨率的图标,drawable-mdpi用来存放中等分辨率的图标,drawable-ldpi用来存放低分辨率的图标。程序运行时可以根据手机分辨率的高低选取相应目录下的图片。如果开发程序时不准备使用过多图片,那么也可以只准备一张图片将其放入四个目录的任何一个中去。 1.4 项目框架分析 res/目录下有1个layout文件夹,里面存放的是项目涉及的布局文件,本例中的布局文件是ADT 默认自动创建的activity_main.xml文件,布局文件利用XML语言来描述用户界面。代码的第8行说明在界面中使用TextView控件,TextView控件主要用来显示字符串文本。代码的第8行到14行分别对此文本控件的长、宽、显示位置以及显示内容等做了描述。第13行中@string/hello_world是对资源的引用,在上一个小节中,曾经尝试修改了这个字符串的内容,使界面中显示的内容发生了变化,现在可以再次体会一下这个操作。 1.4 项目框架分析 在Eclipse 中,双击“activity_main.xml”文件,在编辑区出现如图所示的界面,其中显示的是Graphical Layout图形界面的预览效果。可以点击Layout 选项卡旁边的activity_main.xml,切换到代码编辑模式。 1.4 项目框架分析 res/目录下有1个values文件夹,里面存放的strings.xml文件用来定义字符串和数值,在Activity 中使用getResources().getString(resourceId)或getResources().getText(resourceId)取得资源。 如strings.xml文件代码所示,它一共声明了4个string标签,每个string 标签对应声明一个字符串,如“name="hello_world">这是我的第一个Android程序”中name属性指定其引用名,在程序中调用此引用名(hello_word)就可以使用后面的值(实际的字符串:这是我的第一个Android程序)。 1 2 HelloAndroid 3 这是我的第一个Android程序 4 Settings 5 MainActivity 6 1.4 项目框架分析 1.4.3 gen/目录下的R.java 文件 R.java 文件中默认有attr、drawable、layout、string 等多个静态内部类,每个静态内部类分别对应一种资源,如layout 静态内部类对应layout 中的界面文件,其中每个静态内部类中的静态常量分别定义一条资源标识符,如“ public static final int main=0x7f030000”对应的是layout 目录下的main.xml 文件。具体的对应关系如图所示。 1.4 项目框架分析 1.4.3 gen/目录下的R.java 文件 1.4 项目框架分析 在已经理解了R.java 文件中内容的来源,也就是当开发者在res/目录的任何一个子目录中添加相应类型的文件之后,ADT 会在R.java 文件中相应的匿名内部类中自动生成一条静态int类型的常量,对添加的文件进行索引。如果在layout 目录下再添加一个新的界面,那么在public static final class layout中也会添加相应的一个静态int常量。相反,当我们再res 目录下删除任何一个文件,其在R.java中对应的记录会被ADT自动删除。再例如,在strings.xml添加一条记录,那么在R.java的string内部类中也会自动增加一条记录。如果发现R.java没有及时主动更新,可以点击保存按钮,然后选中R.java文件,单击右键,选择refresh进行刷新,或者删除R.java文件,并且refresh刷新,由系统自动生成一个更新后的R.java文件。 1.4 项目框架分析 R.java文件会给开发程序带来很大的方便,比如在程序代码中使用“public static final int icon=0x7f020000”可以找到对应的icon.png这幅图片,资源名称一般与资源文件名相同(不包含扩展名)。通过在代码中使用资源ID可以实现在程序中引用资源。实现资源的引用有两种方式,一种是在代码中引用资源,通过[R.type.resource_name]方式,其中type代表资源类型,也就是R文件中的内部类名称,resource_name代表资源名称。第二种方式是在资源文件XML中引用资源,此时一般使用格式@[package:]type/name。 1.4 项目框架分析 R.java 文件除了有自动标识资源的“索引”功能之外,还有另一个主要的功能,当res目录中的某个资源在应用程序中没有被使用到,在该应用程序被编译的时候系统就不会把对应的资源编译到这个应用程序的APK 包中,这样可以节省Android 手机的资源。 1.4 项目框架分析 1.4.4 Android Manifest.xml 介绍 在根目录中的每个应用程序都有一个功能清单文件AndroidManifest.xml(一定是这个名字)。这个清单文件为Android 系统提供了关于这个应用程序的基本信息,系统在运行任何程序代码之前必须知道这些信息。其中包括了package中暴露的组件(activities、services等等),它们各自的实现类,以及各种能被处理的数据和启动位置。 1.4 项目框架分析 AndroidManifest.xml 主要包含以下功能: 命名应用程序的Java应用包,这个包名用来唯一标识应用程序; 描述应用程序的组件——活动、服务、广播接收者、内容提供者;对实现每个组件和公布其功能(比如能处理哪些意图消息)的类进行命名。这些声明使得Android系统了解这些组件以及它们在什么条件下可以被启动; 决定应用程序组件运行在哪个进程里面; 1.4 项目框架分析 声明应用程序所必须具备的权限,用以访问受保护的部分API,以及和其它应用程序交互; 声明应用程序其它的必备权限,用以组件之间的交互; 列举测试设备Instrumentation类,用来提供应用程序运行时所需的环境配置及其它信息,这些声明只在程序开发和测试阶段存在,发布前将被删除; 声明应用程序所要求的Android API的最低版本级别; 列举application所需要链接的库; 1.4 项目框架分析 程序中使用的所有组件都会在功能清单文件中被列出来,所以程序员必须对此文件非常了解,并能够进行准确的修改。 AndroidManifest.xml是每个android程序中必须具备的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities、ContentProviders、Services和Intent Receivers以外,还能指定permissions和instrumentation(安全控制和测试) 下面进行对AndroidManifest.xml文件进行具体的分析,manifest是根目录,属于第一层。 1.4 项目框架分析 1 5 8 第9行代码android:icon用来声明整个APP的图标,图片一般都放在drawable文件夹下,使用资源引用的方式。 第10行代码android:label用来声明整个APP的应用程序名称,字符串一般都放在strings文件中,使用资源引用的方式。 第11行代码android:theme定义资源的风格,它定义了一个默认的主题风格给所有的activity,当然也可以在自己的theme里面去设置它,有点类似style。 1.4 项目框架分析 12 15 // 第四层次,声明此activity的filter特性 16 17 18 // 第四层次声明结束 19 // 第三层次Activity的声明结束 20 // 第二层次Application的声明结束 21 //第一层次声明结束 1.4 项目框架分析 第12行到第19行是对这个应用程序中的一个Activity的声明,属于第三层。由于本应用中只有一个Activity,所以这里只需要声明一个Activity,如果有多个Activity或Service等程序员自己开发的组件,则必须在这里进行添加声明。 第13行代码android:name是一个前面省略了包名的类名,在android:name=".MainActivity"中一定要注意前面有个点,这个类名也是在src根目录下,以包命名的文件夹中对应的java文件名,大小写也要完全对应。 第15行到第18行是对这个Activity的过滤器filter的声明,属于第四层。Intent filter内会设定的资料包括action、data与category三种。也就是说filter只会与intent里的这三种资料作对比动作。 1.4 项目框架分析 首先介绍action属性:action很简单,它只有android:name这个属性。常见的android:name值为android.intent.action.MAIN,表明此activity是作为应用程序的入口。起到的功能和C语言程序中的main()函数相同,所以Action:MAIN的这个属性能且只能赋给一个Activity。 其次介绍category属性:category也只有android:name属性。常见的android:name值为android.intent.category.LAUNCHER,它用来决定应用程序是否显示在程序列表里。 最后介绍data属性:每个data元素指定一个URI和数据类型(MIME类型)。它有四个属性scheme、host、port、path,它们分别对应URI( scheme://host:port/path)的每个部分,本段代码中没有涉及到data属性。 1.4 项目框架分析 这里需要补充一个非常重要的权限许可的问题。Android系统采用不声明不能使用的原则,如果程序需访问内部的使用通讯录、Internet、GPS、蓝牙等功能,都必须在manifest文件中进行许可声明,否则程序将出错。 1.4 项目框架分析 Android的manifest文件中有四个标签与permission有关,它们分别是 。其中最常用的是 ,如果需要获取某个权限的时候,就必须在manifest文件中声明同层次,一般就插入在application标签后面,如 这句代码表示当前的应用程序具有从内部的通讯录联系人中读出名字和号码的权限。 1.4 项目框架分析 在AndroidManifest.xml文件中必须注意它所包含的intent-filters,即“意图过滤器”。应用程序的核心组件(活动、服务和广播接收器)通过意图被激活,意图代表的是你要做的一件事情,代表你的目的,Android 寻找一个合适的组件来响应这个意图,如果需要启动这个组件的一个新的实例,并将这个实例传递给这个意图对象。这时需要filters描述activity启动的位置和时间。每当一个activity(或者操作系统)要执行一个操作时,例如:打开网页或联系簿时,它创建出一个intent的对象,这个对象将承载一些信息用于描述你想做什么,你想处理什么数据,数据的类型以及其它一些信息。Android比较intent对象和每个application所暴露的intent-filter中的信息,以找到最合适的activity来处理调用者所指定的数据和操作。 1.5 Android 四大组件介绍 Android四大基本组件分别是Activity、Service服务、Content Provider内容提供者,BroadcastReceiver广播接收器,下面分别进行介绍。 Activity 应用程序中,一个Activity通常是一个单独的屏幕,它上面可以显示一些控件,也可以监听并对用户的事件做出响应。Activity之间通过Intent进行通信,在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。 典型的动作类型有:M AIN(activity的入口)、VIEW、PICK、EDIT 等。而动作对应的数据则以URI 的形式进行表示。例如:要查看一个人的联系方式,你需要创建一个动作类型为VIEW 的Intent,以及一个表示这个人的URI。 1.5 Android 四大组件介绍 BroadcastReceive广播接收器 开发的应用程序可以使用BroadcastReceiver对外部事件进行过滤,使之只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。但是它们可以启动一个activity或service 来响应它们收到的信息,或者用NotificationManager 来通知用户。通知的方式有很多种──闪动背灯、震动、播放声音等,一般来说可以在状态栏上放一个持久的图标,用户打开它即可获取消息。 Android系统已经提供了很多广播,系统常见的广播Intent有开机启动、电池电量变化、时间改变、短信、电话到达通知等广播,用户可以根据需要进行接收使用。 1.5 Android 四大组件介绍 Service 服务 一个Service 是一段具有长生命周期,没有用户界面的程序。它可以用来开发监控类程序。 所用一个媒体播放器的例子来说明Service的作用,在一个媒体播放器的应用程序中有多个Activity,它们可以让使用者选择歌曲并播放歌曲。然而,音乐播放这个功能并没有对应的Activity,因为使用者认为在导航到其它屏幕(如看电子书)时,音乐应该还在播放,在这个例子中,此时系统前台是电子书的界面,但媒体播放器会使用Context.startService()来启动一个事先定义好的具有歌曲播放功能的Service,从而可以实现在后台保持音乐的播放。同时,系统也将保持这个Service 一直执行下去,直到这个Service 运行结束。另外还可以通过使用Context.bindService()方法,连接到一个Service 上(如果这个Service 还没有运行,则将它启动),当连接到一个Service 之后,可以用Service 提供的接口与它进行通讯。 1.5 Android 四大组件介绍 Content Provider内容提供者 Android平台提供了Content Provider这个功能,它可以使一个应用程序的指定数据集提供给其他应用程序,属于应用程序之间的数据交换。这些数据可以存储在文件系统中、SQLite数据库等位置,其他应用程序也可以通过ContentResolver类,从内容提供者中获取或存入相关数据,只有在多个应用程序间共享数据时,才需要内容提供者。例如,通讯录的数据可能需要被多个应用程序所使用,但这些数据只存储在一个内容提供者中,它的优点非常明显,就是统一数据访问方式。 LTB红软基地

展开

同类推荐

热门PPT

相关PPT