基于android平台的飞机游戏毕业设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要
随着科技的发展,现在手机的功能已不仅仅是简单的打接电话、收发短信了。

更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。

因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的飞机小游戏。

虽然现在市面上存在着各种各样的游戏版本,可是飞机游戏其市场还是相当大的。

因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏关卡不断提高,其难度也更大,刺激性也更强。

可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。

对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。

这样的小游戏刚好迎合了他们的需求。

本游戏是基于安卓系统下开发的应用,采用java语言和安卓自带的xml布局编写,运用intent通信来完成每个布局界面之间的调用,操作简便,容易上手。

游戏通过控制飞机发射子弹击毁敌机来实现,子弹为自动发射,飞机可以进行上下左右移动,当子弹碰撞敌机时即判定击毁,通过击败最后的boss来通关游戏。

关键词:Android;Java;飞机游戏;布局
ABSTRACT
With the development of science and technology, the functionality of the phone is not just a simple fight to answer the phone, send and receive SMS. More mobile phone users want to work, learn and dexterity can carry instruments entertainment. Therefore, in order to meet the needs of many users and adapt to the size of the mobile phone, we developed a set of all walks of life with the highly entertaining and interactive aircraft game. Although now on the market there are various version of the game, but the airplane game market is still quite large. Because it special is it attractive and more in-depth, put it down. With the game level, the difficulty is greater, the stimulation is also stronger. Can be said that the game's advantage lies in its simple, whether it is mobile phones, game consoles, can be quickly run smoothly. Out busy people, it is not possible to spend a lot of time for recreation, big game does not work. This game just to cater to their needs.
This game is developed applications based on the Andrew system, using java language and Andrews comes to write xml layout, use of intent communications to complete each call to the layout of the interface between the simple, easy to use. The game by controlling the aircraft fired bullets destroyed enemy bullets for automatic launch, the aircraft can move up and down, when the bullet collision enemy determines that destroyed the clearance of the game by defeating the final boss
Keywords: Android; the Java; aircraft games; layout
目录
绪论 (1)
1.Android系统简介 (2)
2. Android的相关技术介绍及分析 (4)
2.1 Android系统架构研究 (4)
2.1.1Android的功能特征 (5)
2.2 Android架构分析 (6)
2.2.1应用程序框架 (7)
2.2.2 类库 (7)
2.2.3 Android运行时组件 (8)
2.3 Android应用的构成和工作机制 (8)
3.Android开发环境 (9)
3.1 下载JDK 6 (9)
3.2 下载Eclipse 3.5 (9)
3.3 下载Android SDK (10)
3.4 安装ADT (10)
4. Android应用程序结构剖析 (12)
4.1 Android的API (12)
4.2 Android应用程序结构解析 (13)
4.2.1 Activities (14)
4.2.2 Service (16)
4.2.3 Content Provider (17)
4.2.3.1 数据模型 (17)
4.2.3.2 URI (17)
4.2.4 Broadcast Receiver (18)
4.3 Intent的详细解析 (19)
4.3.1 Intent的抽象描述 (19)
4.3.2 Android如何解析Intent (20)
5. 飞机游戏设计 (21)
5.1研究目标 (21)
5.2 需求细则 (21)
5.3 UI界面设计 (25)
5.4文件结构与用途 (27)
5.5功能模块图 (28)
6. 各模块设计 (28)
6.1 XML界面布局设计 (28)
6.1.1 游戏开始界面设计 (28)
6.1.2 游戏得分记录界面设计 (30)
6.1.3 游戏设置界面设计 (30)
6.1.4 玩家记录界面设计 (31)
6.2 游戏各功能实现代码 (32)
6.2.1 飞机类定义 (32)
6.2.2飞机移动设计 (33)
6.2.3 子弹的绘制 (34)
6.2.4 飞机碰撞设计 (35)
6.2.5 数据库存储游戏得分 (38)
结论 (40)
致谢 (41)
参考文献 (43)
绪论
Android 系统最初由安迪·鲁宾(Andy Rubin)制作,最初主要支持手机。

2005年8月17日被Google收购。

2007年11月5日,Google与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统并生产搭载Android的智慧型手机,并逐渐拓展到平板电脑及其他领域上。

随后,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。

同时,一个负责进一步发展和维护Android操作系统的Android开源项目也被建立(AOSP)。

Android的内核基于Linux,除了内核之外,则是中介层、数据库元和用C/C++编写的API以及应用程序框架。

Android的应用程序通常以Java数据库元为基础编写,运行程序时,应用程序的代码会被即时转变为Dalvik dex-code (Dalvik Executable),然后Android操作系统通过使用即时编译的Dalvik虚拟机来将其运行。

除了开放手持设备联盟之外,Android还拥有许多由全球各地开发者组成的开源社区来专门负责开发Android应用程序和第三方Android操作系统来延长和扩展Android的功能和性能。

截止至2011年10月,Android Market(现为Google Play)上拥有超过30万个认证的应用程序,Android Market的应用程序下载量也在2011年12月达到100亿次。

由于Android是开放的,因此它还可以通过第三方网站来下载安装Google Play Store上所没有的应用程序。

2010年末数据显示,仅正式推出两年的Android操作系统在市场占有率上已经超越称霸十年的诺基亚Symbian系统。

2011年8月,Android操作系统在全球智能手机操作系统的市场份额已达48%,成为全球第一大智能手机操作系统。

1.Android系统简介
1)命名由来
Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在 1886 年发表的科幻小说《未来夏娃》(L'Ève future)中。

他将外表像人的机器人取作 Android。

2)Logo来源
Android的Logo是由 Ascender 公司设计的。

其中的文本使用了Ascender 公司专门制作的称之为“GoogleDroid字型”的字型。

Android是一个全身绿色的机器人,绿色也是Android的标志。

颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象征。

有时候,它们还会使用纯文本的Logo。

3)Linux内核
Android操作系统的内核属于Linux内核的一个分支,具有典型的Linux周期和功能,除此之外,Google为了能让Linux在移动设备上良好的运行,对其进行了修改和扩充。

Android去除了Linux中的本地X Window System,也不支持标准的GNU 库,这使得Linux平台上的应用程序移植到Android平台上变得困难。

2008年,Patrick Brady于Google I/O演讲“Anatomy & Physiology of an Android”,并提出的Android HAL架构图。

HAL以*.so档的形式存在,可以把Android framework 与Linux kernel隔开,这种中介层的方式使得Android能在移动设备上获得更高的执行效率。

这种独特的系统结构被Linux内核开发者Greg Kroah-Hartman和其他内核维护者称赞。

Google还在Android的内核中加入了自己开发制作的一个名为“wakelocks”的移动设备电源管理功能,该功能用于管理移动设备的电池性能,但是该功能并没有被加入到Linux内核的主线开放和维护中,因为Linux内核维护者认为Google没有向他们展示这个功能的意图和代码。

2010年2月3日,由于Google在Android内核开发方面和Linux社区方面开发的不同步,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux 内核“状态树”(“staging tree”)上除去。

2010年4月,Google宣布将派遣2名开发人员加入Linux内核社区,以便重返Linux内核。

2010年9月,Linux内核开发者Rafael J. Wysocki添加了一个修复程序,使得Android的“wakelocks”可以轻松地与主线Linux内核合并。

2011年,Linus Torvalds说:“Android的内核和Linux 的内核将最终回归到一起,但可能不会是4-5年。


4)特点
◆显示布局
Android操作系统支持更大的分辨率,VGA,2D显示,3D显示都给予OpenGL ES 2.0标准规格,并且支持传统的智能手机。

◆数据存储
Android操作系统内置SQLite小型关联式资料库管理系统来负责存储数据。

◆网络
Android操作系统支持所有的网络制式,包括GSM/EDGE、IDEN、CDMA、EV-DO、UMTS、Bluetooth、Wi-Fi、LTE、NFC和WiMAX。

◆信息
作为原设计给手机使用的操作系统,Android操作系统原生支持短信和邮件,并且支持所有的云端信息和服务器信息。

◆语言
Android操作系统支持多语言。

◆浏览器
Android操作系统中内置的网页浏览器基于WebKit内核,并且采用了Chrome V8引擎。

在Android 4.0内置的浏览器测试中,HTML5和Acid3故障处理中均获得了满分,并且于2.2版及之后能原生支持Flash。

◆支持Java
虽然Android操作系统中的应用程序大部分都是由Java编写的,但是Android 却是以转换为Dalvik executables的文件在Dalvik虚拟机上运行的。

由于Android 中并不自带Java虚拟机,因此无法直接运行Java程序。

不过Android平台上提供了多个Java虚拟机供用户下载使用,安装了Java虚拟机的Android系统可以运行J2ME 的程序。

◆媒体支持
Android操作系统本身支持以下格式的音频/视频/图片媒体:WebM、H.263, H.264 (in 3GP or MP4 container)、MPEG-4 SP、AMR, AMR-WB (in 3GP container)、AAC, HE-AAC (in MP4 or 3GP container)、MP3、MIDI、Ogg Vorbis、FLAC、WAV、JPEG、PNG、GIF、BMP。

如果用户需要播放更多格式的媒体,可以安装其他第三方应用程序。

◆流媒体支持
Android操作系统支持RTP/RTSP(3GPP PSS, ISMA)的流媒体以及(HTML5 <video>)的流媒体,同时还支持Adobe的Flash,在安装了RealPlayer之后,还支持苹果公司的流媒体。

◆硬件支持
Android操作系统支持识别并且使用视频/照片摄像头,多点电容/电阻触摸屏,GPS,加速计,陀螺仪,气压计,磁强计,键盘,鼠标,USB Disk,专用的游戏控制器,体感控制器,游戏手柄,蓝牙设备,无线设备,感应和压力传感器,温度计,加速2D位位块传输(硬件方向,缩放,像素格式转换)和3D图形加速。

◆多点触控
Android支持原生的多点触摸,在最初的HTC Hero手机上即有这个功能。

该功能是内核级别(为了避免对苹果公司的触摸屏技术造成侵权)。

◆蓝牙
Android支持A2DP,AVRCP,发送文件(OPP),访问电话簿(PBAP),语音拨号和发送手机之间的联系。

同时支持键盘,鼠标和操纵杆(HID)。

◆语音功能
除了支持普通的电话通话之外,Android操作系统从最初的版本开始就支持使用语音操作来使用Google进行网页搜索等功能。

而从Android OS v2.2开始,语音功能还可以用来输入文本、语音导航等功能。

◆无线共享功能
Android操作系统支持用户使用本机充当“无线路由器”,并且将本机的网络共享给其他手机,其他机器只需要通过WiFi寻找到共享的无线热点,就可以上网。

而在Android OS v2.2版本之前的操作系统则需要通过第三方应用或者其他定制版系统来实现这个功能。

◆截图功能
从Android OS v4.0版本开始,Android操作系统便支持截图功能,该功能允许用户直接抓取手机屏幕上的任何画面,用户还可以通过编辑功能对截图进行处理,还可以通过蓝牙/E-mail/微博/共享等方式发送给其他用户或者上传到网络上,也可以拷贝到电脑中。

2. Android的相关技术介绍及分析
2.1 Android系统架构研究
Android是一个包含操作系统、中介架构层及应用程序所产生出来的软件堆栈架构。

由下而上,其核心为嵌入式Linux2.6作业系统,向上搭配Google为Android 开发的类库及Android运行时,再配合应用程序架构,来开发各种不同的应用程序。

2.1.1Android的功能特征
(l)应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。

(2)Dalvik虚拟机器:在Android平台上所使用Java虚拟机,不是Sim公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API 方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。

(3)集成的浏览器:集成的浏览器是Android内建的浏览器,是以WebKit的浏览引擎为基础所开发成的。

WedKit是一个开源浏览器网页排版引擎,目前使用WebKit 引擎的浏览器主要有:Safari,Midori,Epiphany等。

配合Android手机的功能,可以在浏览网页时,达到更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果。

(4)优化的绘图能力:在程序里可以用到的绘图功能分为2D与3D两个方面。

在2D方面,Android提供了一套特有的类库(SGL;而在3D方面则是使用OpenGLES1.0(openGL for Embedded systems)规范的类库。

它们是一种非常快的图形引擎,并且支持硬件加速。

(5)SQLite数据库:SQLite提供结构化的数据存取。

SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。

它能够支持Windows/Linux/U nix等主流的操作系统,同时能够跟很多程序语言相结合,比如php,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。

它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2TB。

它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。

同时它还支持事务功能和并发处理等等。

SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。

(6)多媒体的支持能力:主要用于播放媒体文件。

这同时包括对音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址”(Note:URI即是统一资源识别地址)模式—在网络上直接播放的流媒体。

另外支持各种通用的静态图像格式,例如:JPG、PNG、GIF等格式。

(7)GSM技术:Global System for Mobile Communications,即全球移动通讯系统,俗称”全球通”,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。

GSM技术是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。

(8)蓝牙、EDGE、3G及Wi-Fi:蓝牙是一种新型、开放、低成本、短距离的无线连接技术,可取代短距离的电缆,实现话音和数据的无线传输。

EDGE(Enhanced Data Rate for GSM,Evolution),即增强型数据速率GSM演进技术。

EDGE是一种从GSM到3G 的过渡技术,它主要是在GSM系统中采用了一种新的调制方法,即最先进的多时隙操作和SPSK调制技术。

由于8PSK可将现有GSM网络采用的GMSK调制技术的信号空间从2扩展到8,从而使每个符号所包含的信息是原来的4倍。

Wi-Fi(WirelessFidelity),即无线保真技术,与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。

该技术使用的是2.4GHz附近的频段,该频段目前尚属没用许可的无线频段。

其目前可使用的标准有两个,分别是IEEE802.lla和IEEE802.11b。

这些通讯能力也是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。

(9)GPS: Global Positioning System,即全球定位系统,它是一个由覆盖全球的24颗卫星组成的卫星系统。

这个系统可以保证在任意时刻和任何地点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。

这项技术可以用来引导飞机、船舶、车辆以及个人。

这个同样也是属于手机硬体方面的体现,也是在开发Android应用程序是可以突出的特点之一。

2.2 Android架构分析
图2-1中显示的是Android架构的五个主要部分。

图2-1 安卓架构的五个部分
2.2.1应用程序框架
在Android SDK中,定义了让开发者使用与核心应用程序相同API的权限应用程序框架是为了要简化组件的重新利用而设计的,应用程序可以发布功能为其它应用程序所使用。

但是,这要受限于应用程序架构的安全机制,使用者以用同样的机制来新增、置换组件。

目前所有的应用程序是由服务及系统来组成,包含有: (l)一套强大和可扩展的视图系统:用来建构一个应用程序的基本组件,包了在开发系统画面时,常用的列表、网格、文本框、按钮等控制项,甚至是内嵌的Web浏览器。

(2)内容提供者:使应用程序可以访问另一个应用程序的数据(如联系人数库),或者共享它们自己的数据。

(3)资源管理器:提供各种非程序代码的资源让应用程序去使用。

例如:本字符串、图形文件或排版相关的布局文件。

(4)通知管理器:提供应用程序在状态栏中显示应用程序自定义的提示信息。

(5)活动管理器:管理所有应用程序的生命周期及提供常用的导航回退功能。

例如:启动应用程序要用到的资源准备及关闭应用程序时释放内存及相关资源等工作。

(6)视窗管理器:用来管理所有启动程序的视窗。

(7)位置管理器:用来管理地图服务的相关功能。

(8)电话管理器:用来管理用户拨打与接听电话的相关功能。

(9)包管理器:管理所有安装在Android系统内的包。

2.2.2 类库
在Android中包含一些C/C++的类库,这些类库能被Android系统中不同的组件来使用。

开发者可以通过应用程序框架使用这些功能。

部分核心类库列表如下:
(1)surface Manager:主要的功能是让开发者可以去存取/显示系统及管理的功能,在[显示]与[存取操作]间的对应、互动以及实现无接缝的2D/3D多应用程序之间的整合。

例如:在2D、2D显示上的合成、叠合动作。

(2)3Dlibraries:主要是依openGLES1.0规范所定义的3D绘图引擎。

该库使用硬件加速(当硬件可用时),可以将硬件的3D功能做最佳化的处理显示。

(3)SGL:主要是处理有关显示2D方面的绘图引擎。

(4)Media Frame work:主要是以packetVideo公司的OpenCORE为基础所发展的多媒体类库,该库支持回放和录制大量流行的音视频格式和静态图片。

例如:MPEG4、
H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式
(5)Free Type:主要是用来显示点阵图和处理向量字形的。

(6)SSL:(secureSocketsuyer),中文名为“安全套接层协议层”,它是网景公司提出的基于WEB应用的安全协议,当前版本为3.0。

SSL协议指定了一种在应用程序协议(如HTTP、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。

它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。

SSL 协议位于TCP胆协议与各种应用层协议之间,为数据通讯提供安全支持。

SSL协议可分为两层:SSL记录协议(SSL Record Proto col):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议(SSL Hand shake proto col):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务主要有:①认证用户和服务器,确保数据发送到正确的客户机和服务器;②加密数据以防止数据中途被窃取;③维护数据的完整性,确保数据在传输过程中不被改变。

(7)SQLite:SQLite是一套开放性的关联式资料库,能够被所有应用程序使用的轻量级的关系数据库引擎。

(8)web Kit:是一个先进的网页浏览器引擎,被用来构建Android浏览器和内嵌的web视图,也可以让开发者利用这个引擎来做不同的应用。

(9)lib c:就是一个BSD标准C类库。

但是,针对Linux嵌入式装置进行过最佳化的调整。

2.2.3 Android运行时组件
虽然Android是用Java语言来开发、撰写应用程序,但却不使用Java运行时组件来执行Java程序,而是使用了由Google自行研发的Android运行时组件来执行程序。

Android运行时组件包括两个重要的部分,一个是核心类库,另一个是Dalvik 虚拟机。

2.3 Android应用的构成和工作机制
对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、Content Provider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成。

在应用程序中使用时,需要在配置文件AndroidManifest.xml中进行配置。

这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。

Android应用的构成和工作流程如图2-2:
图2-2 Android的构成和工作流程
3.Android开发环境
3.1 下载JDK 6
首先需要的是JDK。

Android SDK需要JDK 5或更高的版本,我们使用JDK 6来开发。

以windows1为例,从Sun网站(/javase/downloads/)下载JDK 6并安装。

接下来,设置JAVA_HOME环境变量以指向JDK安装文件夹。

右键单击“计算机”选择“属性”,选择“高级系统设置”,然后单击“环境变量”。

单击“新建”添加JAVA_HOME 变量,如果该变量已存在,单击“编辑”修改它。

JAVA_HOME的值类似于“C:\Program Files\Java\jdk1.6.0_16”。

3.2 下载Eclipse 3.5
安装JDK之后,可以从 /downloads/ 下载Eclipse IDE for Java Developers。

将下载的.zip的文件解压到任何位置。

首次启动Eclipse时,它将要求为工作区间提供一个位置。

为了简化操作,可以选择一个简单的位置,比如D:\workspaces。

默认windows环境下
3.3 下载Android SDK
Android SDK是开发android应用程序的基本要求,没有Android SDK,android 应用开发无从谈起。

Android SDK中包含一个模拟器,所以无需带有Android操作系统的移动设备就能开发Android应用程序。

Android SDK可以从/sdk 下载。

Android SDK 同eclipse一样以.zip文件的形式发布,所以将其解压到合适的位置。

Android SDK 包含一个tools目录,需要将它添加到PATH中。

3.4 安装ADT
ADT这个Eclipse插件对开发Android应用程序有很大的帮助。

它提供了一些工具来创建、测试、和调试Android应用程序。

ADT需要使用Eclipse中的Install New Software工具来执行安装。

(1)选择Help菜单项并选择Install New Software…选项。

这个选项在以前的Eclipse版本中为“Software Updates”。

(2)选择“Work with”字段,输https:///android/eclipse/ 。

Eclipse将连接该网站并生成列表,如图3-1所示。

然后选择父节点Developer Tools,并确认同事选中所有子节点,然后单击Next。

(3)更具提示安装所有的工具,并安装ADT所需工具的许可协议。

单击“I accept…”,然后单击Finish按钮。

图3-1 使用Eclipse中的Install New Software功能安装ADT
在Eclipse中安装ADT的最后一步是将他指向Android SDK。

选择windows菜单并选择Preferences。

在Preferences对话框中,选择Android节点并将SDK Location字段设置为Android SDK的路径(参见图3-2)然后单击Apply按钮。

图3-2 将ADT指向Android SDK
4. Android应用程序结构剖析
4.1 Android的API
Android API主要包含了以下几个部分:
5)AndroidManifest.xml
AndroidManifest.xml是系统的控制文件,它告诉系统如何处理所创建的所有应用组件(尤其是活动(Activity),服务(Service),意图接收器(Intent Receiver)和内容提供者(Content Provider))。

举例来说,控制文件就是把活动和要接收的意图(Intents)连接在一起的“胶水”。

6)活动
活动就是一个有生命周期的对象。

一个活动就是完成某些工作的代码块,这部分工作还可能包括对用户UI界面的显示。

不过这不是必须的,有些活动从不显示UI 界面。

7)视图
视图可以将其自身绘制到屏幕上。

Android的用户界面由一系列的视图树构成。

接口都是由一组以树的形式出现的视图组成的。

开发者可以通过创建一个新的视图的方法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不常用的用户图形窗口界面)。

8)意图
意图是一个简单的消息对象,它表示程序想做某事的“意图”。

比如应用程序想要显示一个网页,那么它可以通过创建一个Intent实例并将其传递给系统来表示意图浏览这个URI。

系统将定位到能处理这一Intent的代码(在当前情况下就是浏览器),并运行之。

意图也可以用于广播系统范围内的有效事件(例如通知事件)。

9)服务
服务是运行在后台的一段代码。

它可以运行在它自己的进程,也可以运行在其他应用程序的进程里,这取决于自身的需要.。

其它的组件可以绑定到一个服务上来,通过远程过程调用(RPC)来调用这个方法。

例如媒体播放器的服务,当用户退出媒体选择的界面时,仍然希望音乐依然可以继续播放,这时就可用服务来保证当用户界面关闭时音乐还继续播放着。

10)通知
通知将以小图标的形式呈现在状态栏里,用户通过与图标的交互来接收消息。

最常见的通知包括短信息、通话记录和语音邮件,但是应用程序也可以创建它们自己的通知事件。

11)内容提供者
内容提供者是用来提供对设备上数据进行访问。

典型的例子就是使用内容提供者来访问联系人列表。

应用程序也可以使用其它程序通过内容提供者提供的数据,同时也可以定义自己的内容提供者来向其它应用提供数据访问服务。

4.2 Android应用程序结构解析
通常由以下四个组件来构建一个完整的Android应用程序。

①活动
②意图接收器
③服务
④内容提供者
然而,并不是所有的Android应用程序都必须具备上面的四个组件,可以由上面的一个或几个来组建。

当决定使用以上哪些组件来构建Android应用程序时,需要将它们注册在AndroidManifest.xml文件中,这是一个XML配置文件,在这个文件中可以声明应用程序组件以及它们的特性和要求。

这个配置文件是每个Android应用程序所必需的。

4.2.1 Activities
Activities 是一个程序的组件之一。

它的主要功能是提供界面。

一个程序一般由多个Activity组成,各activities之间关系很松散,它们之间没有直接的关联。

必须有一个activity被指定为主activity,它是程序启动时首先显示的界面。

每个activity都可以随意启动其它的activity。

每当一个activity被启动,则前一个activity就被停止。

一个程序中的所有启动的activity都被放在一个栈中,所以被停止的activity并没有销毁,而在存于棧中。

新启动的activity 先被存放于栈中,然后获得输入焦点。

在当前活动的activity上点返回键,它被从棧中取出,然后销毁,然后上一个activity被恢复。

当一个activity因为新的activity启动而被停止时,它会收到状态变化的通知,这样的变化有多个,每个都会引起系统调用一个相应的回调方法以通知activity,这些回调方法被统称为“生命周期回调方法”。

这些回调方法分别在Activity被创建、停止、恢复、销毁时被调用。

如图4-1,介绍各个“生命周期回调方法”,以及其各个方法之间的关系:
onCreate :当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。

onCreate 方法有一个参数,该参数可以为空( null ),也可以是之前调用onSaveInstanceState ()方法保存的状态信息。

onStart :该方法的触发表示所属活动将被展现给用户。

onResume :当一个活动和用户发生交互的时候,触发该方法。

onPause :当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。

这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。

onStop :当一个活动不再需要展示给用户的时候,触发该方法。

如果内存紧张,系统会直接结束这个活动,而不会触发 onStop 方法。

所以保存状态信息是应该在onPause时做,而不是onStop时做。

活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。

因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。

在一些。

相关文档
最新文档