毕业论文-基于android的飞机大战游戏设计与实现_第1页
毕业论文-基于android的飞机大战游戏设计与实现_第2页
毕业论文-基于android的飞机大战游戏设计与实现_第3页
毕业论文-基于android的飞机大战游戏设计与实现_第4页
毕业论文-基于android的飞机大战游戏设计与实现_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LUOYANGNORMALUNIVERSITY2013届本科毕业设计基于ANDROID的飞机大战游戏设计与开发院(系)名称信息技术学院专业名称软件工程学生姓名学号指导教师XXX副教授完成时间2013年5月摘要相信ANDROID(安卓)已经为人们熟知,经过2011年的洗礼,ANDROID智能手机火速上位,甚至说现在手机系统由IOS和ANDROID平分也不为过。随着ANDROID智能手机在中国内地的风靡,基于ANDROID平台的应用开发也逐渐成为IT开发的一大热门。游戏是智能机不可或缺的应用之一,“水果忍者”、“愤怒的小鸟”等ANDROID游戏应用的成功,让人看到手机游戏在ANDROID平台上的巨大发展空间。基于此,采用ECLIPSE和ANDROIDADT作为集成开发平台,开发本ANDROID游戏APP。本应用为ANDROID飞机大战游戏,主要有6个操作界面分别为开始界面,游戏界面,设置界面,得分界面,WIN界面,LOSE界面。玩家可以选择自己进入设置界面对游戏进行设置,或进入的分界面查看自己本次操作是否在前六名等操作。作为游戏背景音乐的存在是不可或缺的,本应用在不同的操作界面演奏不同的背景音乐,玩家还可以在设置界面设置背景音乐的大小。由于ANDROID控件ACTIVITY的生命周期的特点,本应用会在被点击“EXIT”按钮的ACTIVITY中发送一个EXIT的广播,所有的本应用的ACTIVITY收到广播后会自动结束,使得本应用能够完全的退出系统。本应用采用ANDROID的SURFACEVIEW绘制游戏界面,游戏的主界面美观,赏心悦目,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。关键词ANDROID开发;手机游戏;JAVA;SQLITEABSTRACTANDROIDHASBEENKNOWNFORPEOPLE,AFTER2011YEARSOFBAPTISM,ANDROIDSMARTPHONEDEVELOPINGFASTANDROIDOCCUPIESALARGESHAREINTHEMARKETANDROIDGAMEAPPLICATIONISSUCCESSFUL,ITMAKEAPERSONSEETHATMOBILEGAMESONTHEANDROIDPLATFORMOFTHEHUGEDEVELOPMENTSPACEBASEDONTHIS,WEUSINGECLIPSEANDANDROIDADTASINTEGRATEDDEVELOPMENTPLATFORM,TODEVELOPTHEANDROIDGAMEAPPLICATIONTHISAPPLICATIONFORANDROIDPLANEWARGAMESINCLUDESIXOPERATINGINTERFACE,RESPECTIVELYASTHESTARTSCREEN,THEGAMEINTERFACEANDSETINTERFACE,WININTERFACE,LOSEINTERFACEPLAYERSCANCHOOSEINTERFACETOPLAYTHEGAMEASTHEMOBILEPHONEGAMEBACKGROUNDMUSICISINDISPENSABLE,THEAPPLICATIONPLAYDIFFERENTBACKGROUNDMUSICINDIFFERENTINTERFACE,PLAYERSCANALSOSETTHESIZEOFTHEBACKGROUNDMUSICINSETTINGINTERFACETHISAPPLICATIONUSINGTHEANDROIDSURFACEVIEWTODRAWGAMEINTERFACE,GAMEINTERFACEPLEASINGTOTHEEYEBYPEOPLETOPLAYINORDERTOGIVEPLAYERSAGOODGAMEENVIRONMENT,THECONTROLMODULEOFGAMESHOULDBESIMPLE,EASYTOOPERATEKEYWORDSANDROIDPROGRAMINGMOBILEPHONEGAMESJAVAPROGRAMINGSQLITE目录第1章绪论111系统开发背景112系统研究目的和意义113可行性分析1第2章系统需求分析221用户功能需求分析222系统性能要求323业务流程分析3第3章系统总体设计431系统功能模块分析4311系统管理4312APP应用设置4313玩家信息管理432系统类关系图433系统总体设计6第4章系统详细设计841开发工具简介842数据库设计8421DAO数据库访问对象9422SQLITE数据库1243游戏界面设计12431开始界面12432游戏界面19433设置界面26434得分界面34435WIN界面41436LOSE界面46第5章软件测试和调试5151白盒测试法5152黑盒测试法52第6章工作总结和展望53参考文献54致谢55第1章绪论11系统开发背景随着科技的发展,现在手机的功能已不仅仅是简单的接打电话、收发短信了。更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的飞机小游戏。虽然现在市面上存在着各种各样的游戏版本,可是飞机游戏其市场还是相当大的。因为它的特殊在于人们在玩游戏的时候的过程中使爱不释手。随着游戏关卡不断提高,其难度也更大,刺激性也更强。可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。这样的小游戏刚好迎合了他们的需求。12系统研究目的和意义在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。这款小型的手机游戏,可以让我们随时随地都能享受游戏,从繁重的日常生活中解脱出来。游戏的主界面应该力求美观,赏心悦目,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。13可行性分析该系统采用ECLIPSE集成ANDROIDADT为开发平台进行APP开发。ECLIPSE是一个开放的源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。虽然大都数用户很乐于ECLIPSE当作JAVA集成开发环境(IDE)来使用,但ECLIPSE的目标却不仅限于此。ECLIPSE还包括插件开发环境,这个组件主要针对希望扩展ECLIPSE的软件开发人员,因为它允许他们构建与ECLIPSE环境无缝集成的工具。由于ECLIPSE中的每样东西都是插件,对于ECLIPSE中的每样东西都是插件,对于给ECLIPSE提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。基于ECLIPSE的应用程序的插件开发诸如SIEMENS公司的PLM产品TEAMCENTER的插件级开发。ANDROID专门针对ECLIPSE开发做了ADTANDROIDDEVELOPERTOOLS开发插件,因此该应用使用ECLIPSE开发完全可行。第2章系统需求分析21用户功能需求分析由于本程序简单易操作,交互性好,对用户没什么特别要求。一般用户经过几分钟练系都可以熟悉本游戏的规则。图21功能界面示例图图22游戏界面示例图22系统性能要求1实时性本应用为手机游戏因此对于用户的操作必须做出立即响应,否则本游戏即为失败。2易操作性单机手机游戏的最大特点即为易操作性,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏的规则。这是本应用对于操作性的要求。23业务流程分析依据系统的需求分析,得到系统的流程图如图23所示图23系统流程图第3章系统总体设计31系统功能模块分析当前应用使用的SURFACEVIEW来绘制的页面因此相对来说大部分逻辑都是由ACTIVITY来做处理的。本系统的功能模块也根据ACTIVITY的不同来划分成6个功能模块。311系统管理各个操作界面布局适当,颜色搭配等要美观。各个ACTIVITY之间的切换要快速(PS它们各自的背景音乐也要随之切换,给用户以顺畅、自然的感觉)。用户在任何一个ACTIVITY点击“EXIT”按钮或CONTEXTMENU中的“退出”都要成功的将当前应用挂起的多个ACITIVITY和当前ANDROID虚拟机显示的ACTIVITY顺利的停止,并销毁。312APP应用设置设置应用系统背景音乐声音大小和游戏难度。使用SEEKBAR来控制系统音量,使用RADIOGROUP来控制飞机难度。313玩家信息管理在游戏结束时对于玩家的名称和得分进行记录,并在玩家查看排名情况时,以倒序形式显示前六名玩家的得分和姓名等信息。32系统类关系图系统实体类、边界类、控制类之间的关系如图31所示图31实体类、控制类、边界类之间的关系各个界面类之间的关系如图32所示图32APP边界类关系33系统总体设计系统的中只有玩家一种用户,不必向其他的网站或者是教务系统一样进行身份验证等操作。玩家点击应用图标直接进入应用的开始界面。用户的操作总体可以归并成如33玩家用例图所显示的内容,子弹的用例图如图34所示,飞机的用例图如图35所示。用户的操作基本可以划分为“开始游戏”,“设置游戏”,“玩游戏”,“查看分数”,“退出游戏”这五个用例。图33玩家用例图图34子弹用例图图35飞机用例图第4章系统详细设计41开发工具简介ANDROID开发工具ADT是一个插件的ECLIPSEIDE,目的是给开发人员提供一个强大的、集成的环境中构建ANDROID应用程序。扩展能力的ECLIPSEADT让你迅速建立新的ANDROID项目,创建一个应用程序的用户界面,添加基于安卓框架的API,调试您的应用程序使用ANDROIDSDK工具,生成APK文件在使用ECLIPSE运行ANDROID应用的时候ECLIPSE会自动的将生成的APK文件自动的注册到ANDROID虚拟机中。在ECLIPSEADT发展与高度推荐,是一种最快的方式开始。与引导项目设置它提供,以及工具集成、定制XML编辑器和调试输出窗格,ADT给了你极大的提高在发展中ANDROID应用程序。使用ECLIPSE集成ANDROIDADT做ANDROID应用开发是目前企业中常用的ANDROID应用开发方式。本项目在开发环境JDK17ECLIPSE370ANDROIDADT40342数据库设计本应用使用的是ANDROID虚拟机做开发,因此使用的为ANDROID虚拟机中自带的数据库SQLITE。本应用只是在针对用户得分及用户姓名等基本信息进行存储,因此数据库非常简单,仅仅是设计了一个用来存储用户排名信息的表结构。用来存储用户基本信息的COMPOSITOR_TABLE的字段信息如图41所示。CREATETABLECOMPOSITOR_TABLEIDINTEGERPRIMARYKEY,NAMEVARCHAR40NOTNULL,SCOREINTEGERNOTNULL图41COMPOSITOR表ANDROID中自带的SQLITEOPENHELPER作用一个帮助类,帮助创建数据库和数据库版本管理。本应用直接创建一个SKYGAMEDATABASEHELPER类继承ANDROID自带的数据库操作类SQLITEOPENHELPER。在ONCREATE方法中创建表COMPOSITOR_TABLE。PUBLICVOIDONCREATESQLITEDATABASEDB/TODOAUTOGENERATEDMETHODSTUBSTRINGCREATE_TABLETHISCONTEXTGETRESOURCESGETSTRINGRSTRINGCREATE_COMPOS_TABLE/CREATETABLECOMPOSITOR_TABLEIDINTEGERPRIMARYKEY,NAMEVARCHAR40NOTNULL,SCOREINTEGERNOTNULLDBEXECSQLCREATE_TABLE421DAO数据库访问对象本应用中的数据库访问对象SKYGAMEDATABASEDAO采用了单例模式,以保证当前应用中只存在一个DAO数据库访问对象。使用了最简单的单例,并未从线程安全的角度进行进一步的限制,原因在于考虑到当前应用中只有3个ACTIVITY使用了DAO,由图42可知ACTIVITY之间的切换类似于进程对于CPU的占用一样,当前显示在界面上的ACTIVITY是活动状态而其他ACTIVITY则是挂起状态,因此不必担心它们的线程同时去创建DAO对象以引起当前系统中多个DAO对象的状况。PUBLICCLASSSKYGAMEDATABASEDAOPRIVATESTATICSKYGAMEDATABASEDAOINSTANCENULLPRIVATESQLITEDATABASEDATABASENULLPRIVATECONTEXTCONTEXTNULLPRIVATESKYGAMEDATABASEHELPERHELPERNULLPUBLICSTATICSKYGAMEDATABASEDAOGETINSTANCECONTEXTCONTEXTIFINSTANCENULLINSTANCENEWSKYGAMEDATABASEDAOCONTEXTRETURNINSTANCEPRIVATESKYGAMEDATABASEDAOCONTEXTCONTEXTTHISCONTEXTCONTEXTHELPERNEWSKYGAMEDATABASEHELPERCONTEXT,1WHILETHISDATABASEHELPERGETWRITABLEDATABASENULLPUBLICVOIDINSERTPLAYERSKYGAMEPLAYERPLAYERSTRINGSQLCONTEXTGETRESOURCESGETSTRINGRSTRINGCOMPOS_TABLECONTENTVALUESVALUESNEWCONTENTVALUESVALUESPUT“SCORE“,PLAYERGETSCOREVALUESPUT“NAME“,PLAYERGETNAMEIFTHISDATABASEISOPENTHISHELPERONOPENTHISDATABASETRYTHISDATABASEBEGINTRANSACTIONTHISDATABASEINSERTSQL,NULL,VALUESTHISDATABASESETTRANSACTIONSUCCESSFULCATCHEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACEFINALLYTHISDATABASEENDTRANSACTIONPUBLICARRAYLISTGETPLAYERSARRAYLISTPLAYERSNEWARRAYLISTSTRINGSQLCONTEXTGETRESOURCESGETSTRINGRSTRINGSELECT_FORM_COMPOS_TABLE_COUNTCURSORCURSORDATABASERAWQUERYSQL,NULLCURSORMOVETOFIRSTIFCURSORGETCOUNT0INTCOUNT0COUNTPLAYERSADDNEWSKYGAMEPLAYERCOUNT,CURSORGETSTRING1,CURSORGETINT2WHILECURSORMOVETONEXTCOUNTPLAYERSADDNEWSKYGAMEPLAYERCOUNT,CURSORGETSTRING1,CURSORGETINT2RETURNPLAYERSPUBLICVOIDDELETESTRINGSQLCONTEXTGETRESOURCESGETSTRINGRSTRINGDELETE_FROM_COMPOS_TABLEIFTHISDATABASEISOPENTHISHELPERONOPENTHISDATABASETRYTHISDATABASEBEGINTRANSACTIONTHISDATABASEEXECSQLSQLTHISDATABASESETTRANSACTIONSUCCESSFULCATCHSQLEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACEFINALLYTHISDATABASEENDTRANSACTIONPUBLICVOIDCLOSEIFTHISDATABASEISOPENTHISDATABASECLOSE图42ANDROID中ACTIVITY生命周期状态图422SQLITE数据库SQLITE,是一款轻量级的关系型数据库。由于它占用的资源非常少,所以在很多嵌入式设备都是用SQLITE来存储数据。ANDROID作为目前主流的移动操作系统,完全符合SQLITE占用资源少的优势,故在ANDROID平台上,集成了一个嵌入式关系型数据库SQLITE。由于SQLITE是轻量级的关系型数据库,它支持的SQL语句也是有限的,在使用SQL语句获得前6名玩家的信息时直接使用了SQLITE不支持的TOP语句引起了异常。在查阅相关资料后才发现SQLITE不支持TOP语句,因此使用语句DESCLIMIT来代替TOP达到了自己想要的只获得表COMPOSITOR_TABLE中的SCORE字段值最大的前六个记录信息。SELECTFROMCOMPOSITOR_TABLEORDERBYSCOREDESCLIMIT643游戏界面设计431开始界面使用SURFACEVIEW将图43中的未被按下的按钮和图45游戏开始界面背景图片绘制成游戏开始界面图46。图43未被按下的按钮图标集图44被按下的按钮图标集图45开始界面背景图片图46开始界面4311ANDROIDMANIFESTXMLANDROID应用程序中,并没有像C和JAVA这样有MAIN函数来作为应用程序的入口。ANDROID应用程序提供的是入口ACTIVITY,而非入口函数。ANDROIDMANIFESTXML文件中定义了整个ANDROID应用所包含的ACTIVITY在ANDROIDMANIFESTXML中将SKYGAMESTARTACTIVITY设置为当前SKYGAME启动时,默认加载的ACTIVITY,代码如下4312ACTIVITY中注册LAYOUT在SKYGAMESTARTACTIVITY的ONCREATE方法中设置要显示的LAYOUT,方法如下所示PROTECTEDVOIDONCREATEBUNDLESAVEDINSTANCESTATE/TODOAUTOGENERATEDMETHODSTUBSUPERONCREATESAVEDINSTANCESTATESETCONTENTVIEWRLAYOUTSKY_GAME_START_LAYOUT/设置当前ACTIVITY调用的LAYOUT/其他操作4313BROADCASTRECEIVER由于本应用是有多个ACTIVITY为了解决多个ACTIVITY在其中任意一个ACTIVITY结束时都会相应一起退出系统,因此针对每一个ACTIVITY设置一个BROADCASTRECEIVER来接收广播,一旦接收到广播当前ACTIVITY自动退出。ACTIVITY接收到广播后退出的代码如下所示PRIVATEBROADCASTRECEIVEREXITRECEIVERNEWBROADCASTRECEIVEROVERRIDEPUBLICVOIDONRECEIVECONTEXTCONTEXT,INTENTINTENT/TODOAUTOGENERATEDMETHODSTUBSKYGAMESCREENROLLACTIVITYTHISFINISH4314发送广播而当前ACTIVITY在被按下“EXIT”或者“退出”按钮时,会向外界发送一个广播,之后结束自己ACTIVITYACTIVITYACTIVITYCONTEXTINTENTINTENTNEWINTENTEXITINTENTSETACTIONEXITACTIVITYSENDBROADCASTINTENTACTIVITYFINISH4315MEDIAPLAYER(媒体播放器)本应用使用ANDROID的MEDIAPLAYER来演奏每一个页面的背景音乐。背景音乐可以存放在两个位置,一个是当前工程的/RES/RAW目录下,如果是存放在该目录下的话,在INSTALL当前ANDROID工程时,需要耗费非常的时间将此类音频文件上传到ANDROID虚拟机中。另一个存放位置是直接将音频文件上传到DDMS的/MNT/SDCARD/MUSIC文件夹下,这相当于将该音频文件放入到了ANDROID手机的SD卡上了,相对于存放位置一来说,该方法在加载ANDROID工程时消耗的时间比较少。具体向虚拟机中上传文件如图47所示图47DDMS向ANDROID虚拟机中上传文件MEDIAPLAYER使用方法PRIVATEMEDIAPLAYERSTARTSOUNDNULLSTARTSOUNDNEWMEDIAPLAYERTRY/从SDCARD中获得音频文件的路径/STARTSOUNDSETDATASOURCE“/MNT/SDCARD/MUSIC/STARTMP3“STARTSOUNDPREPARECATCHILLEGALARGUMENTEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHSECURITYEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHILLEGALSTATEEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHIOEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACESTARTSOUNDSETLOOPINGTRUE/设置循环由于当前应用针对不同的显示界面(ACTIVITY)有不同的背景音乐,因此当前ACTIVITY挂起时,对应的背景音乐也要挂起(STARTSOUNDPAUSE)。而在当前ACTIVITY销毁(DESTORY)时,需要对背景音乐进行停止(STARTSOUNDSTOP)和回收(STARTSOUNDRELEASE)操作。4316LAYOUT中调用SURFACEVIEW普通的LAYOUT设置与直接调用SURFACEVIEW的LAYOUT有所不同,一下列出调用SURFACEVIEW的LAYOUT的格式此处使用自定义SURFACEVIEW的绝对路径来编写开始页面的LAYOUT文件,使得开始页面直接使用该SURFACEVIEW绘制的BITMAP作为背景图片来显示。SURFACEVIEW所需要设置下它的SURFACEHOLDER和MONITOR实现CALLBACK接口属性HOLDERGETHOLDERMONITORNEWMONITORHOLDERADDCALLBACKMONITORMONITOR类的方法方法SURFACECREATEDSURFACEHOLDERHOLDER的主要作用是在SURFACEVIEW创建的绘制SURFACEVIEW的内容。方法SURFACEDESTROYEDSURFACEHOLDERHOLDER的主要作用是在SURFACEVIEW销毁时对于当前SURFACEVIEW中的一些对象做销毁处理。SURFACEVIEW的方法ONTOUCHEVENTMOTIONEVENTEVENT可以捕获鼠标对于屏幕的触碰事件,在该方法中对于鼠标触碰的区域做出判断如果点击的为按钮图片的位置则会调用图44中对应的被按下按钮来显示,如此显示使用户有一个可感受的按钮被按下的动态即视感,用户体验更好。PUBLICBOOLEANONTOUCHEVENTMOTIONEVENTEVENT/TODOAUTOGENERATEDMETHODSTUBINTACTIONEVENTGETACTIONFLOATEVENTXEVENTGETXFLOATEVENTYEVENTGETYIFEVENTXSTART_XINFLATERINFLATERMENUPLAYING_GAME_OPTION_MENU,MENURETURNTRUE在游戏界面的SKYGAMESCREENROLLACTIVITY的方法ONOPTIONSITEMSELECTEDMENUITEMITEM中为每个菜单选项编写响应事件,具体使用方法如下所示PUBLICBOOLEANONOPTIONSITEMSELECTEDMENUITEMITEM/TODOAUTOGENERATEDMETHODSTUBINTENTINTENTNULLSWITCHITEMGETITEMIDCASERIDPG_OPTION_EXITINTENTNEWINTENTINTENTSETACTIONEXITTHISSENDBROADCASTINTENTTHISFINISHBREAKCASERIDPG_OPTION_OPTIONINTENTNEWINTENTSKYGAMESCREENROLLACTIVITYTHIS,SKYGAMEOPTIONBUTTONONCLICKACTIVITYCLASSTHISSTARTACTIVITYINTENTBREAKCASERIDPG_OPTION_SCOREINTENTNEWINTENTSKYGAMESCREENROLLACTIVITYTHIS,SKYGAMESCOREBUTTONONCLICKACTIVITYCLASSTHISSTARTACTIVITYINTENTBREAKCASERIDPG_OPTION_STARTINTENTNEWINTENTSKYGAMESCREENROLLACTIVITYTHIS,SKYGAMESTARTACTIVITYCLASSTHISSTARTACTIVITYINTENTBREAKRETURNTRUE4323发送短信在用户赢得一关的时候会发送一条信息“通过第N关”,实现该功能的代码如下PRIVATESMSMANAGERSMSNULLTHISSMSSMSMANAGERGETDEFAULTPRIVATESTRINGTELNUMNULLTELNUM“5554“/ANDROID虚拟机的IDPUBLICVOIDSENDMESSAGESTRINGTELNUM,STRINGMESSAGESMSSENDTEXTMESSAGETELNUM,NULL,MESSAGE,SENTINTENT,NULLPSANDROID的发送短信存在一个BUG就是当前DALVIKVM发送的短信它自己无法收到,如果同时开两个DALVIKVM其中一个发送短信的话,另一个会收到短信。4324鼠标控制玩家飞机移动使用鼠标控制玩家飞机的移动,在自定义的SURFACEVIEW的ONTOUCHEVENT方法中对于按下区域是否在玩家飞机图片所在位置做出判定,如果在,则在拖动的过程中不断获得鼠标的坐标,并将该坐标传递给玩家飞机,以此来使玩家飞机随着鼠标的位置移动。具体根据鼠标移动控制玩家飞机移动的逻辑如下所示PUBLICBOOLEANONTOUCHEVENTMOTIONEVENTEVENT/TODOAUTOGENERATEDMETHODSTUBINTACTIONEVENTGETACTIONFLOATXEVENTGETXFLOATYEVENTGETYIFXTHISPLAYERGETPLANE_XEMPTYBITMAPCREATEBITMAPEMPTYBLOOD,LENG,0,EMPTYBLOODGETWIDTHLENG,EMPTYBLOODGETHEIGHTCANVASDRAWBITMAPBLOOD,0,VIEWHEIGHTBLOODGETHEIGHT,NULLCANVASDRAWBITMAPEMPTY,BLOODGETWIDTH,VIEWHEIGHTEMPTYGETHEIGHT,NULLELSEIFLENG0BLOODBLOODBEGINEMPTYBITMAPCREATEBITMAPEMPTYBLOOD,BLOODBEGINGETWIDTH,0,EMPTYBLOODGETWIDTHBLOODBEGINGETWIDTH,EMPTYBLOODGETHEIGHTCANVASDRAWBITMAPBLOOD,0,VIEWHEIGHTBLOODGETHEIGHT,NULLCANVASDRAWBITMAPEMPTY,BLOODGETWIDTH,VIEWHEIGHTEMPTYGETHEIGHT,NULLELSECANVASDRAWBITMAPEMPTYBLOOD,0,VIEWHEIGHTEMPTYBLOODGETHEIGHT,NULLISPLAYERDEADTRUE433设置界面当前界面使用的是普通的LAYOUT,生成的设置界面如图415所示图415设置界面4331SEEKBARAUDIOMANAGERSETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSIC,SEEKBARPROGRESS,0INTCURRENTPROGRESSAUDIOMANAGERGETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSICINTMAXPROGRESSAUDIOMANAGERGETSTREAMMAXVOLUMEAUDIOMANAGERSTREAM_MUSICSOUNDSEEKBARSEEKBARFINDVIEWBYIDRIDOPTION_SOUND_SEEKBARSOUNDSEEKBARSETONSEEKBARCHANGELISTENERTHISSOUNDSEEKBARSETMAXMAXPROGRESSSOUNDSEEKBARSETPROGRESSCURRENTPROGRESS以下代码是根据SEEKBAR的滚动按钮的位置设置当前系统的音量SEEKBARPROGRESSSEEKBARGETPROGRESSAUDIOMANAGERSETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSIC,SEEKBARPROGRESS,04332SHAREDPREFERENCE当前页面的信息使用SHAREDPREFERENCE存储在系统中,使用SHAREDPREFERENCE信息的代码如下SHAREDPREFERENCESSPPREFERENCEMANAGERGETDEFAULTSHAREDPREFERENCESSKYGAMEOPTIONBUTTONONCLICKACTIVITYTHISRDIDRDGROUPGETCHECKEDRADIOBUTTONIDEDITOREDITORSPEDITEDITORPUTINT“SEEKBARPROGRESS“,SEEKBARPROGRESSEDITORPUTINT“RDGROUPCHECKEDRDID“,RDIDEDITORCOMMIT代码执行后可以在当前ECLIPSE的DDMS页面中包含文件自动生成的过程,可以使用此方法的/DATA/DATA/PROJECTNAME/SHARED_PREFS位置查找到生成的SHAREDPREFERENCE文件,如图416所示图416查找并导出SHAREDPREFERENCE文件点击导出,可以查看生成的SHAREDPREFERENCE文件内容,SHAREDPREFERENCE文件内容如图417所示图417导出的SHAREDPREFERENCE文件内容当前页面也是用了CONTEXTMENU控件,具体详见4322游戏界面对于CONTEXTMENU的介绍,本处不做赘述。SKYGAMEOPTIONBUTTONONCLICKACTIVITY具体内容如下PUBLICCLASSSKYGAMEOPTIONBUTTONONCLICKACTIVITYEXTENDSACTIVITYIMPLEMENTSSEEKBARONSEEKBARCHANGELISTENERPRIVATEFINALSTRINGEXIT“EXIT“PRIVATEMEDIAPLAYERBACKGROUNDPLAYERNULLPRIVATESEEKBARSOUNDSEEKBARNULLPRIVATEAUDIOMANAGERAUDIOMANAGERNULLPRIVATEBUTTONBTNMAKESURENULLPRIVATEBUTTONBTNCANCLENULLPRIVATEINTSEEKBARPROGRESS0PRIVATERADIOGROUPRDGROUPNULLPRIVATEINTRDID0PRIVATEONCLICKLISTENERBTNMAKESUREHANDLERNEWONCLICKLISTENERPUBLICVOIDONCLICKVIEWV/TODOAUTOGENERATEDMETHODSTUBSHAREDPREFERENCESSPPREFERENCEMANAGERGETDEFAULTSHAREDPREFERENCESSKYGAMEOPTIONBUTTONONCLICKACTIVITYTHISRDIDRDGROUPGETCHECKEDRADIOBUTTONIDEDITOREDITORSPEDITEDITORPUTINT“SEEKBARPROGRESS“,SEEKBARPROGRESSEDITORPUTINT“RDGROUPCHECKEDRDID“,RDIDEDITORCOMMITTOASTTTOASTMAKETEXTSKYGAMEOPTIONBUTTONONCLICKACTIVITYTHIS,“成功保存你的设置“,TOASTLENGTH_LONGTSHOWPRIVATEONCLICKLISTENERBTNCANCLEHANDLERNEWONCLICKLISTENERPUBLICVOIDONCLICKVIEWV/TODOAUTOGENERATEDMETHODSTUBINITSEEKBARPROGRESSAUDIOMANAGERSETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSIC,SEEKBARPROGRESS,0SOUNDSEEKBARSETPROGRESSSEEKBARPROGRESSRDGROUPCHECKRDIDPRIVATEONCHECKEDCHANGELISTENERRDGROUPONCHECKEDCHANGEHANDLERNEWONCHECKEDCHANGELISTENEROVERRIDEPUBLICVOIDONCHECKEDCHANGEDRADIOGROUPGROUP,INTCHECKEDID/TODOAUTOGENERATEDMETHODSTUBRDIDCHECKEDIDPRIVATEBROADCASTRECEIVEREXITRECEIVERNEWBROADCASTRECEIVEROVERRIDEPUBLICVOIDONRECEIVECONTEXTCONTEXT,INTENTINTENT/TODOAUTOGENERATEDMETHODSTUBSKYGAMEOPTIONBUTTONONCLICKACTIVITYTHISFINISHPROTECTEDVOIDONCREATEBUNDLESAVEDINSTANCESTATE/TODOAUTOGENERATEDMETHODSTUBSUPERONCREATESAVEDINSTANCESTATESETCONTENTVIEWRLAYOUTOPTION_LAYOUTINITSEEKBARPROGRESSINITCOMPENTREGISTERRECEIVEREXITRECEIVER,NEWINTENTFILTEREXITPROTECTEDVOIDONSTART/TODOAUTOGENERATEDMETHODSTUBSUPERONSTARTBACKGROUNDPLAYERSTARTPROTECTEDVOIDONRESTART/TODOAUTOGENERATEDMETHODSTUBSUPERONRESTARTBACKGROUNDPLAYERSTARTPROTECTEDVOIDONPAUSE/TODOAUTOGENERATEDMETHODSTUBSUPERONPAUSEBACKGROUNDPLAYERPAUSEPROTECTEDVOIDONDESTROY/TODOAUTOGENERATEDMETHODSTUBSUPERONDESTROYBACKGROUNDPLAYERSTOPBACKGROUNDPLAYERRELEASEUNREGISTERRECEIVEREXITRECEIVERPUBLICBOOLEANONCREATEOPTIONSMENUMENUMENU/TODOAUTOGENERATEDMETHODSTUBMENUINFLATERINFLATERNEWMENUINFLATERTHISINFLATERINFLATERMENUOPTION_OPTION_MENU,MENURETURNTRUEPUBLICBOOLEANONOPTIONSITEMSELECTEDMENUITEMITEM/TODOAUTOGENERATEDMETHODSTUBINTENTINTENTNULLSWITCHITEMGETITEMIDCASERIDOPTION_OPTION_EXITINTENTNEWINTENTINTENTSETACTIONEXITTHISSENDBROADCASTINTENTTHISFINISHBREAKCASERIDOPTION_OPTION_SCOREINTENTNEWINTENTSKYGAMEOPTIONBUTTONONCLICKACTIVITYTHIS,SKYGAMESCOREBUTTONONCLICKACTIVITYCLASSTHISSTARTACTIVITYINTENTBREAKCASERIDOPTION_OPTION_STARTINTENTNEWINTENTSKYGAMEOPTIONBUTTONONCLICKACTIVITYTHIS,SKYGAMESTARTACTIVITYCLASSTHISSTARTACTIVITYINTENTBREAKRETURNTRUEPUBLICVOIDINITCOMPENTRDGROUPRADIOGROUPFINDVIEWBYIDRIDOPTION_GRADE_RADIO_GROUPRDGROUPSETONCHECKEDCHANGELISTENERRDGROUPONCHECKEDCHANGEHANDLERBTNMAKESUREBUTTONFINDVIEWBYIDRIDBTN_MAKE_SUREBTNMAKESURESETONCLICKLISTENERBTNMAKESUREHANDLERBTNCANCLEBUTTONFINDVIEWBYIDRIDBTN_CANCLEBTNCANCLESETONCLICKLISTENERBTNCANCLEHANDLERAUDIOMANAGERAUDIOMANAGERTHISGETSYSTEMSERVICEAUDIO_SERVICERDGROUPCHECKRDIDAUDIOMANAGERSETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSIC,SEEKBARPROGRESS,0INTCURRENTPROGRESSAUDIOMANAGERGETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSICINTMAXPROGRESSAUDIOMANAGERGETSTREAMMAXVOLUMEAUDIOMANAGERSTREAM_MUSICSOUNDSEEKBARSEEKBARFINDVIEWBYIDRIDOPTION_SOUND_SEEKBARSOUNDSEEKBARSETONSEEKBARCHANGELISTENERTHISSOUNDSEEKBARSETMAXMAXPROGRESSSOUNDSEEKBARSETPROGRESSCURRENTPROGRESSBACKGROUNDPLAYERNEWMEDIAPLAYERTRYBACKGROUNDPLAYERSETDATASOURCE“/MNT/SDCARD/MUSIC/STARTMP3“CATCHILLEGALARGUMENTEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHSECURITYEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHILLEGALSTATEEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHIOEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACETRYBACKGROUNDPLAYERPREPARECATCHILLEGALARGUMENTEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHSECURITYEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHILLEGALSTATEEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACECATCHIOEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACEBACKGROUNDPLAYERSETLOOPINGTRUEPUBLICVOIDONPROGRESSCHANGEDSEEKBARSEEKBAR,INTPROGRESS,BOOLEANFROMUSER/TODOAUTOGENERATEDMETHODSTUBAUDIOMANAGERSETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSIC,SEEKBARGETPROGRESS,0PUBLICVOIDONSTARTTRACKINGTOUCHSEEKBARSEEKBAR/TODOAUTOGENERATEDMETHODSTUBPUBLICVOIDONSTOPTRACKINGTOUCHSEEKBARSEEKBAR/TODOAUTOGENERATEDMETHODSTUBAUDIOMANAGERSETSTREAMVOLUMEAUDIOMANAGERSTREAM_MUSIC,SEEKBARGETPROGRESS,0THISSEEKBARPROGRESSSEEKBARGETPROGRESSPRIVATEVOIDINITSEEKBARPROGRESSSHAREDPREFERENCESSPPREFERENCEMANAGERGETDEFAULTSHAREDPREFERENCESSKYGAMEOPTIONBUTTONONCLICKACTIVITYTHISSEEKBARPROGRESSSPGETINT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论