基于安卓系统的游戏开发与设计毕业设计.doc_第1页
基于安卓系统的游戏开发与设计毕业设计.doc_第2页
基于安卓系统的游戏开发与设计毕业设计.doc_第3页
基于安卓系统的游戏开发与设计毕业设计.doc_第4页
基于安卓系统的游戏开发与设计毕业设计.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

电子科技大学毕业论文(设计) 基于安卓系统的游戏开发与设计第1章 绪 论1.1课题的背景、目的与意义2007年,google公司推出了android手机操作系统,该系统是基于linux平台的开源手机操作系统,并且该系统已经成为了新3g时代的主流移动智能平台之一,根据调查,在中国基于android操作系统的智能手机在中国智能手机总销量中所占的比例已经达到了52%,越来越多的手机用户在接触安卓手机。android是一种以linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安智”。android操作系统最初由andy runbin开发,最初主要支持手机。2005年由google收购注资,并组建开发手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。android的主要竞争对手是苹果手机的ios及rim的blackberry os。2011年第一季度,android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。移动互联网,就是将移动通信和互联网二者结合起来,成为一体。在最近几年里,移动通信和互联网成为当今世界发展最快、市场潜力最大、前景最诱人的两大业务,它们的增长速度都是任何预测家未曾预料到的,所以移动互联网可以预见将会创造怎样的经济神话。伴随着移动互联网的快速发展,智能手机的快速普及,传统的制质地图已经不能满足现在市民的便利出行。运行在安卓系统平台的游戏,运行在安卓平台的游戏深受大家的喜爱。现在,android游戏不但可以运行于智能手机,也可以运行在平板电脑上。1.2国内外现状将向专业化、大规模化方向发展 随着各平台对opengl es支持能力的大力加强,使得开发复杂的3d场景游戏成为可能。更多显示芯片对android的支持,硬件性能将不再成为制约专业化游戏发展的瓶颈。越来越多在pc、psp、ps3、xbox360等各游戏平台占有领先地位的专业游戏公司将向android等手机平台领域快速渗透,使得游戏的规划更加向专业化方向发展。 2. 将向网络化方向发展 随着各平台对无线通信网络、wifi网络、蓝牙网络的良好支持,游戏将创新出更好的游戏性和用户本验。网络游戏,多人游戏,联机对战等将进一步强化玩家对游戏的粘着度,并且容易通过对道具等的控制产生营利模式。玩家之间对交互能力的需求也会促成未来的游戏向网络化发展进程的加快。 3. 将向休闲化、时间片化方向发展 移动设备的随身性使是休闲小游戏将得到快速的发展。移动设备对分散时间的利用促进了游戏向时间片化发展,即一个游戏可以随时开始,随时结束,充分利用用户分散的时间片来运行。作为时下最热门的手机系统,android游戏拥有广大的用户群,所以android游戏的开发也显得相当重要,不仅要有娱乐性,也需要一定的益智性。方块拼图是一个开发用户智力的小游戏,每个关卡都需要动点脑筋,同时拥有评星系统,可以为用户带来一定的刺激性,不断的去提高自己的过关速度。第2章 系统需求分析2.1 需求概括2.1.1目标该游戏简单容易上手,更有一定的益智性,可以锻炼你的记忆能力,也有一定的娱乐性,其中不同游戏类型能让你感觉到这个游戏的多样性2.1.2用户类型和特征用户主要是16岁至45岁的手机用户群,用户只需要操作手机界面就能够进行游戏的操作。2.1.3运行环境(1) 硬件资源装载了android系统的智能手机。(2) 软件资源操作系统: windows xp或windows 7。android sdkjdk:jdk1.6。eclipse2.2 android环境搭建在开始android开发之旅启动之前,首先要搭建环境,然后创建一个简单的helloworld。本文的主题如下:2.2.1环境搭建1.jdk安装如果你还没有jdk的话,可以去这里下载,接下来的工作就是安装提示一步一步走。设置环境变量步骤如下:1.我的电脑-属性-高级-环境变量-系统变量中添加以下环境变量:2.java_home值为: d:program filesjavajdk1.6.0_18(你安装jdk的目录)3.classpath值为:.;%java_home%libtools.jar;%java_home%libdt.jar;%java_home%bin;4.th: 在开始追加 %java_home%bin;5.note:前面四步设置环境变量对搭建android开发环境不是必须的,可以跳过。安装完成之后,可以在检查jdk是否安装成功。打开cmd窗口,输入java version 查看jdk的版本信息。如图2-1所示: 图2-1 验证jdk安装是否成功2.eclipse安装如果你还么有eclipse的话,可以去这里下载,下载如图2-2所示的eclipse ide for java developers(92m)的win 32bit版: 图2-2eclipse下载解压之后即可使用。3.android sdk安装在android developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。运行sdk setup.exe,点击available packages。如果没有出现可安装的包,请点击settings,选中misc中的force https:/.这项,再点击available packages 。选择希望安装的sdk及其文档或者其它包,点击installation selected、accept all、install accepted,开始下载安装所选包在用户变量中新建path值为:android sdk中的tools绝对路径(本机为d:androiddevelopandroid-sdk-windowstools)。如图2-3所示:图2-3设置android sdk的环境变量“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查sdk是不是安装成功。运行 android h 如果有图2-4所示以下的输出,表明安装成功:图2-4验证android sdk是否安装成功4.adt安装打开 eclipse ide,进入菜单中的 help - install new software点击add.按钮,弹出对话框要求输入name和location:name自己随便取,location输入/android/eclipse。如图2-5所示:图2-5 add site框图确定返回后,在work with后的下拉列表中选择我们刚才添加的adt,我们会看到下面出有developer tools,展开它会有android ddms和android development tool,勾选他们。 如图2-6所示:图2-6 install 框图然后就是按提示一步一步next。完成之后:选择window preferences.在左边的面板选择android,然后在右侧点击browse.并选中sdk路径,本机为:d:androiddevelopandroid-sdk-windows点击apply、ok。配置完成。5.创建avd为使android应用程序可以在模拟器上运行,必须创建avd。1、在eclipse中。选择windows android sdk and avd manager2、点击左侧面板的virtual devices,再右侧点击new3、填入name,选择target的api,sd card大小任意,skin随便选,hardware目前保持默认值4、点击create avd即可完成创建avd注意:如果你点击左侧面板的virtual devices,再右侧点击new ,而target下拉列表没有可选项时,这时候你:点击左侧面板的available packages,在右侧勾选/android/repository/repository.xml,如图2-7所示:图2-7 available packages框图然后点击install selected按钮,接下来就是按提示做就行了要做这两步,原因是在1.3、android sdk安装中没有安装一些必要的可用包(available packages)。2.2.2 helloworld通过file - new - project 菜单,建立新项目android project。然后填写必要的参数,如图2-8所示:(注意这里我勾选的是google apis,你可以选你喜欢的,但你要创建相应的avd)。图2-8 hello word框图相关参数的说明:project name: 包含这个项目的文件夹的名称。 package name: 包名,遵循java规范,用包名来区分不同的类是很重要的,我用的是helloworld.test。 activity name: 这是项目的主类名,这个类将会是android的activity类的子类。一个activity类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。 application name: 一个易读的标题在你的应用程序上。 在选择栏的 use default location 选项,允许你选择一个已存在的项目。 点击finish后,点击eclipse的run菜单选择run configurations选择“android application”,点击在左上角(按钮像一张纸上有个“+”号)或者双击“android application”, 有个新的选项“new_configuration”(可以改为我们喜欢的名字)。在右侧android面板中点击browse,选择helloworld在target面板的automatic中勾选相应的avd,如果没有可用的avd的话,你需要点击右下角的manager,然后新建相应的avd。如图2-9所示:图2-9 target框图然后点run按钮即可,运行成功的话会有android的模拟器界面,如图2-10所示:图2-10安卓模拟器界面2.3可行性分析可行性分析是在全面调查基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、运行的方面进行分析和研究,以避免投资失误,保证新系统开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。这部分将从以下三个方面进行研究:技术可行性、经济可行性、操作可行性。1.技术可行性android游戏需要掌握java开发语言和android系统,另外对于算法也要有所掌握。 2.经济可行性android游戏需要的硬件资源不大,已有google提供android系统平台,只需要一台智能手机,手机客户端即可体验该游戏带来的益智和趣味性。3.操作可行性android游戏的开发需要具备一定的android开发技术和对算法技术的掌握,懂得操作智能手机。2.4相关技术简介本系统的用户为所有使用手机客户端的客户,本系统拥有游戏难度选择;游戏类型选择;而且还有各种不同的游戏特效,相关技术如下:2.4.1 java开发语言它最初被命名为oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,sun放弃了该项计划。就在oak几近失败之时,随着互联网的发展,sun看到了oak在计算机网络上的广阔应用前景,于是改造了oak,以“java”的名称正式发布。 jjava 编程语言的风格十分接近c、c+语言。java是一个纯的面向对象的程序设计语言,它继承了 c+ 语言面向对象技术的核心,java舍弃了c +语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 java se 1.5 版本中,java 又引入了泛型编程(generic programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 java 程序的运行效率。但在 j2se 1.4.2 发布后,java 的执行速度有了大幅提升。 与传统程序不同,sun 公司在推出 java 之际就将其作为一种开放的技术。全球数以万计的 java 开发公司被要求所设计的 java 软件必须相互兼容。“java 语言靠群体的力量而非公司的力量”是 sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 sun 公司对 java 编程语言的解释是:java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 java 平台是基于 java 语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争的.net平台以及模仿 java 的 c#语言。2.4.2 android开发android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。 android是以linux为核心的手机操作平台,作为一款开放式的操作系统,随着android的快速发展,如今已允许开发者使用多种编程语言来开发android应用程序,而不再是以前只能使用java开发android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。 在android中,开发者可以使用java作为编程语言来开发应用程序,也可以通过ndk使用c/c+作为编程语言来开发应用程序,也可使用sl4a来使用其他各种脚本语言进行编程,还有其他诸如:qt(qt for android)、mono(mono for android)等一些著名编程框架也开始支持android编程,甚至通过monodriod,开发者还可以使用c#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的android simple语言,该语言类似basic 语言。而在网页编程语言方面,javascript,ajaxa,html5,jquery、sencha、dojo、mobl、phonegap等等都已经支持android开发。 而在android系统底层方面,android使用c/c+作为开发语言2。 应用程序(部分) 早期的android应用程序开发,通常通过android sdk(android软件开发包)下使用java作为编程语言来开发应用程序,但通过不同的软件开发包,则使用的编程语言也不同。 例如开发者可以通过android ndk(android native开发包)使用c语言或者c+语言来作为编程语言开发应用程序。同时谷歌还推出了适合初学者编程使用的simple语言,该语言类似微软公司的visual basic语言。此外,谷歌公司还推出了google app inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。 java开发方面 android支持使用java作为编程语言来开发应用程序,而android的java开发方面从接口到功能,都有层出不穷的变化。考虑到java虚拟机的效率和资源占用,谷歌重新设计了android的java,以便能提高效率和减少资源占用,因而与j2me等不同。如图2-11 图2-11 android结构其中activity等同于j2me的midlet,一个 activity 类(class)负责创建视窗(windows),一个活动中的activity就是在 foreground(前景)模式,背景运行的程序叫做service。两者之间通过由serviceconnection和aidl连结,达到复数程序同时运行效果。如果运行中的 activity 全部画面被其他 activity 取代时,该 activity 便被停止(stopped),甚至被系统清除(kill)。 view等同于j2me的displayable,程序人员可以通过 view 类与“xml layout”档将ui放置在视窗上,android 1.5的版本可以利用 view 打造出所谓的 widgets,其实widget只是view的一种,所以可以使用xml来设计layout,htc的android hero手机即含有大量的widget。至于viewgroup 是各种layout 的基础抽象类(abstract class),viewgroup之内还可以有viewgroup。view的构造函数不需要再activity中调用,但是displayable的是必须的,在activity 中,要通过findviewbyid()来从xml 中取得view,android的view类的显示很大程度上是从xml中读取的。view 与事件(event)息息相关,两者之间通过listener 结合在一起,每一个view都可以注册一个event listener,例如:当view要处理用户触碰(touch)的事件时,就要向android框架注册view.onclicklistener。另外还有bitmap等同于j2me的image2。 2.4.3 递归算法程序调用自身的编程技巧称为递归( recursion)。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。注意:(1) 递归就是在过程或函数里调用自身;(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口4。 第3章 项目设计3.1项目总体设计根据前面对该游戏所提出的需求,我将该系统分为8个部分,分别是游戏开始界面设计,游戏选关界面设计,游戏界面设计,游戏关卡评分功能,游戏排行功能,计算游戏得分,计算通关时间,游戏音乐的控制,游戏帮助提示功能。如图3-1所示:android游戏游戏音乐游戏进程游戏特效游戏开始游戏难度选择游戏菜单 图3-1安卓游戏框架图3.2功能模块设计3.2.1游戏开始模块游戏的入口点,一个游戏的入口需要做特别的设计,这样才能给人生动形象,新颖个性的感觉,才能引起游戏玩家的兴趣。3.2.2游戏难度选择模块在这个模块中加入了游戏不同难度的设置,让新用户可以很好的上手此游戏,让老用户可以挑战更高的游戏难度,增加了游戏的可玩性。3.2.3游戏菜单模块这个模块主要是丰富了游戏的多样性,加入了许多不同的游戏元素,让游戏用户操作起来不会枯燥乏味,增加了游戏的可玩性。3.2.4游戏特效模块这个模块则是为了使游戏看起来更加的生动有趣,游戏特效可以使得游戏看起来更加的生动让游戏的画面更加的生动。3.2.5游戏进程模块这个模块可以让游戏操作者知道当前已经进行的游戏时间和游戏需要通关所剩的步骤,这是个具有人性化的设计。3.2.6游戏音乐模块这个模块则是控制游戏的音乐开关的模块,可以让游戏操作者自行选择是否开启游戏背景音乐。3.3技术框架设计android系统共分为4层,从高到低分别是应用层,应用框架层,系统运行层和linux内核层。应用层:应用是用java语言编写的运行在虚拟机上的程序,google最开始时就在android系统中捆绑了一些核心应用,比如邮件客户端,短消息程序,日历,地图,浏览器等。应用框架层:这一层是编写google发布的核心应用时所使用的api框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的框架设计,但是必须遵守其框架的开发原则系统运行库层:当使用android应用框架时,android系统会通过一些c/c+库来支持我们使用的各个组件,使其能更好的为我们服务。内核层:android的核心系统服务基于linux2.6内核,如安全性,内在管理。 第4章 系统实现在上一章着重讨论了系统各个模块功能的设计,并详细分析了每一个模块的功能。在本章将具体讨论如何实现功能模块,最终实现整个系统。经过这个阶段的设计工作,应该得出对目标系统的描述,各个activity界面之间的开发。4.1 游戏开始模块4.11游戏开始主界面游戏开始界面需要做得既简单又不失个性。所以通过不断的设计和思考,得到如下的效果,其中该界面在云彩的地方添加了相应的动画,是界面显得更加生动,下面两张图可以看出其效果,如图4-1以及4-2所示。图4-1主界面云朵位置一图4-2主界面云朵位置二图4-1和图4-2的云彩分别在不同的位置。4.1.2 云的动画效果设计/动画由另外的文件设置,这里将文件取出获取动画效果。findviewbyid(r.id.imgcloud1).setanimation(animationutils.loadanimation(this, r.anim.cloud1);findviewbyid(r.id.imgcloud2).setanimation(animationutils.loadanimation(this, r.anim.cloud2);游戏的操作代码如下:if (!bcanclick)return;log.v(time, (string) v.gettag(); btnclick = (button) v; if(ifirst=btnclick.getid() return; int itagid = integer.parseint(string) v.gettag(); / -1;memoryapp app = (memoryapp) getapplicationcontext();string sname = string.format(%s%d, app.theme_name, itagid);log.v(sname, sname); iresid = getresources().getidentifier(sname, drawable,getpackagename();btnclick.startanimation(anim1);if (iflag = -1) iflag = itagid;ifirst = btnclick.getid(); else if (ifirst = btnclick.getid()return;imageview img = (imageview) findviewbyid(tag_result_flag);if (img = null) img = new imageview(this);img.setid(tag_result_flag);img.setscaletype(imageview.scaletype.center);relativelayout.layoutparams layout = new relativelayout.layoutparams(relativelayout.layoutparams.fill_parent,relativelayout.layoutparams.fill_parent);layout.addrule(relativelayout.center_in_parent);addcontentview(img, layout);message msg = new message();msg.arg1 = ifirst;msg.arg2 = btnclick.getid();animation anim = animationutils.loadanimation(this,r.anim.result_translate);anim.setinterpolator(animationutils.loadinterpolator(this,android.r.anim.bounce_interpolator);/ cannot match image returnif (iflag != itagid) img.setimageresource(r.drawable.no);img.setanimation(anim);if (togglemusic.ischecked() media = mediaplayer.create(this, r.raw.wrong);media.start();msg.what = msg_set_default_button; else translateanimation animation = new translateanimation(fdogmove * density,(fdogmove + dog_move) * density, 0, 0);animation.setfillafter(true);imgdog.setanimation(animation);img.setimageresource(r.drawable.ok);img.setanimation(anim);if (togglemusic.ischecked() media = mediaplayer.create(this, r.raw.right);media.start();fdogmove = (float) (fdogmove + dog_move);log.v(fdogmove, fdogmove + );msg.what = msg_remove_button;imatchs-;iflag = -1;bcanclick = false;img.setvisibility(view.visible);splashhandle.sendmessagedelayed(msg, 2000);其中包括了handler技术。还有采用标志的方式来作为基础来判定能不能进行点击翻牌。4.2 游戏难度选择模块4.2.1 游戏难度选择游戏难度选择会出现三种难度可供选择,分别为简易难度(easy);普通难度(normal);困难难度(hard),用户可以根据自己的情况进行选择。下图为第一次运行的时候的难度选择界面,如图4-3所示:图4-3难度选择主界面点击menu按钮出现对话框,对话框是引入的xml文件来进行布局,布局代码如下: 4.2.2 简易难度选择当用户选择了简易难度并且点击了开始按钮后会跳转到另一个界面如图4-4所示,简易难度是一个4x4的矩阵也就是用户需要进行成功的连接8次就可以通关。图4-4简易难度界面4.2.3 普通难度选择当用户选择了简易难度并且点击了开始按钮后会跳转到另一个界面如图4-5所示,简易难度是一个4x6的矩阵也就是用户需要进行成功的连接12次就可以通关。图4-5普通难度界面4.2.4 困难难度选择当用户选择了简易难度并且点击了开始按钮后会跳转到另一个界面如图4-6所示,简易难度是一个6x6的矩阵也就是用户需要进行成功的连接18次就可以通关。图4-6困难难度界面难度主要是通过矩阵来控制,难度越大,矩阵越大,根据矩阵的长宽来设置用户游戏界面的地图,具体代码如下:displaymetrics dm = new displaymetrics();getwindowmanager().getdefaultdisplay().getmetrics(dm);density = dm.density;drawbtn(irow, icol);ifirst = -1;iflag = -1;itimes = 0;fdogmove = 0;idogflag = dog_step_left;bcanclick = true;ibgmusicposition = 0;if (pw != null) pw.dismiss();pw = null;imgdog.clearanimation();imgdog.setbackgroundresource(r.drawable.dog1);imgbone.setvisibility(view.visible);imgdogwin.setvisibility(view.invisible);imgdog.setvisibility(view.visible);togglemenu.setchecked(false);togglemusic.setchecked(true);if (bgmedia != null) bgmedia.stop();bgmedia.release();bgmedia = mediaplayer.create(this, r.raw.back_music);bgmedia.start();bgmedia.setlooping(true);bisbgmusicon = true;generategame(irow * icol);/ splashhandle.sendemptymessagedelayed(msg_timer, second_interval);if (timer != null)timer.cancel();timer = new timer(timerupdate);timer.scheduleatfixedrate(new timertask() public void run() settimer();, 0, second_interval);if (dogtimer != null)dogtimer.cancel();dogtimer = new timer(timerdog);dogtimer.scheduleatfixedrate(new timertask() overridepublic void run() / todo auto-generated method stubif (idogflag = dog_step_left) splashhandle.sendemptymessage(msg_dog_step_left);idogflag = dog_step_right; else if (idogflag = dog_step_right) splashhandle.sendemptymessage(msg_dog_step_right);idogflag = dog_step_left;, 0, second_interval_dog);textview tv = (textview) findviewbyid(r.id.txtstep);tv.settext(string.valueof(imatchs);toast.maketext(this, touch menu button to start new game,toast.length_short).show();4.3 游戏菜单模块4.3.1 游戏菜单主界面游戏菜单界面(如图4-7所示)有9中不同的游戏方式可供用户选择,这个设置可以丰富游戏的方式,让用户可以体验不同的游戏内容。图4-7游戏菜单主界面这是activity的跳转,代码如下:intent intent = new intent(memory.this, themelistcontroller.class);startactivity(intent);4.3.2 水果类型设置可以选择水果类型的游戏内容如图4-8所示。图4-8水果类型界面4.3.3旗帜类型设置可以选择旗帜类型的游戏内容如图4-9所示。图4-9旗帜类型界面4.3.4表情类型设置可以选择表情类型的游戏内容如图4-10所示。图4-10表情类型界面4.3.5 动物类型设置可以选择动物类型的游戏内容如图4-11所示。图4-11动物类型界面4.3.6 物品类型设置可以选择物品类型的游戏内容如图4-12所示。图4-12物品类型界面4.3.7 msn类型设置可以选择msn类型的游戏内容如图4-13所示。图4-13msn类型界面4.3.8 食物类型设置可以选择食物类型的游戏内容如图4-14所示。图4-14食物类型界面4.3.9 圣诞类型设置可以选择圣诞类型的游戏内容如图4-15所示。图4-15圣诞类型界面4.3.10 类型是否可以使用在每种游戏类型的下方会提示是否能进行此类型的选择,如果可以选择则是can use(如图4-16),否则为used(如图4-17)。图4-16可以使用类型图4-17不可以使用类型第一个界面运用了listview,通过适配器来将图片和文字布局到界面上,其代码如下:themeitemadapter arrayadapter = new themeitemadapter(this,r.layout.themerow,this.arryitems);listview lvtheme = (listview)findviewbyid(r.id.lvtheme); lvtheme.setadapter(arrayadapter); lvtheme.setonitemclicklistener ( new onitemclicklistener() overridepublic void onitemclick(adapterview parent, view view, int position, long id) log.v(item click, :+position);themeitem item = arryitems.get(position);intent intent = new intent(themelistcontroller.this,mythemegrid.class);intent.putextra( getstring(r.string.param_icontag) , item.geticontag();if(item.getstatus().equals(used)intent.putextra(getstring(r.string.param_iconstatus), 10);elseintent.putextra(getstring(r.string.param_iconstatus), 11);startactivityforresult(intent,5000); );点击每一项都会跳进该类型的设置界面,该界面会显示该类型的所有图片,运用的是gridview,加载适配器后显示到界面中,代码如下:imageadapter adapter = new imageadapter(this,stag);grid.setadapter(adapter);button btnset = (button)findviewbyid(r.id.btnsettheme);btnset.setonclicklistener(mclick);其中imageadapter是自定义适配器,传入一个数组将按照数据顺序来排列该类型的图片,代码如下: imageview imageview; if (convertview = null) / if its not recycle

温馨提示

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

评论

0/150

提交评论