毕业设计(论文)-基于android的猜歌游戏的设计与实现.doc_第1页
毕业设计(论文)-基于android的猜歌游戏的设计与实现.doc_第2页
毕业设计(论文)-基于android的猜歌游戏的设计与实现.doc_第3页
毕业设计(论文)-基于android的猜歌游戏的设计与实现.doc_第4页
毕业设计(论文)-基于android的猜歌游戏的设计与实现.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

太原理工大学毕业设计(论文)用纸太原理工大学毕业设计(论文)任务书 第1页毕业设计(论文)题目:基于android的猜歌游戏的设计与实现全套设计加扣 3012250582毕业设计(论文)要求及原始数据(资料):1综述国内外android音乐应用技术研究现状;2深入了解android猜歌游戏的相关技术;3熟练掌握android猜歌游戏的应用与分析,训练编写android猜歌游戏的能力;4设计并实现android猜歌游戏;5深入分析android猜歌游戏中的关键技术与编写语言;6训练检索文献资料和利用文献资料的能力;7训练撰写技术文档与学位论文的能力。 第2页毕业设计(论文)主要内容:1综述国内外android音乐应用技术研究现状;2了解android猜歌游戏的相关技术;3熟悉android猜歌游戏的开发环境; 4设计android猜歌游戏的用户界面;5. 深入分析android猜歌游戏中的关键技术与编写语言;6熟练掌握基于android的猜歌游戏的逻辑编写;7设计与实现android猜歌游戏。学生应交出的设计文件(论文):1内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。 第3页主要参考文献(资料):1 软件开发技术联盟. Android开发实战M. 清华大学出版社, 2013.2 努德尔曼. Android应用UI设计模式M. 人民邮电出版社, 2013.3 Marko Gargenta. Learning AndroidM. OReilly Media, Inc., 2011.4 伯内特. Android基础教程M. 人民邮电出版社, 2010.5 欧阳零. 程序员藏经阁-ANDROID编程兵书(含光盘)M. 电子工业, 2014.6 Zechner M, Green R. Beginning Android 4 Games DevelopmentM. Apress, 2012.7 邓凡平. 深入理解AndroidM. 机械工业出版社, 2011.8 邵长恒. Android热门应用开发详解M. 电子工业出版社, 2013.9 Theresa Neil美. 移动应用UI设计模式M. 人民邮电, 2015.10 Shah S, Rahman K A. Android development tools for EclipseJ. Android Apps with Eclipse, 2013.专业班级软件1229班学生要求设计(论文)工作起止日期2016年3月21日2016年6月24日指导教师签字日期2016年3月21日教研室主任审查签字日期系主任批准签字日期基于android的猜歌游戏的设计与实现 摘 要在当今社会,智能手机早已普及。而让智能手机最能盛行的理由自然是必不可少的智能手机应用。目前占据了智能手机很大部分市场的安卓手机,由于其开源性,使得每天都有数万计的应用产生。社交,购物,学习,娱乐,游戏,地图等等各个方面的应用都在带给我们便利的同时而成为了我们生活中的一部分。如今,安卓应用已不再是简单的单领域的应用,随着安卓应用开发领域的逐渐成熟,出现了很多新的融合领域的应用,社交与音乐、视频的结合,游戏与社交的结合,游戏与音乐的结合等等。本文的应用主要是游戏跟音乐想结合,开发出基于安卓的猜歌游戏。不仅能让我们在听音乐享受的同时,还能通过游戏来进行互动。这种多领域的结合,恰恰证明了应用给我们的难以想象的创新性。关键词:android;猜歌;游戏III Design and Implementation of Android Guessing Game Based on Song AbstractIn todays society, the smart phone has long been popular. And let the smart phones the most prevalent reason is naturally essential smartphone applications. Currently it occupied much of the smart phone market, Android phones, because of its open-source, so that every day tens of thousands of dollars to produce applications. Socializing, shopping, learning, entertainment, games, maps and so on all aspects of the applications brought us convenience, but to become part of our lives.Today, the Android app is no longer a simple application of a single field, with the maturity of Android application development, there has been a lot of new binding binding domain application integration, social music, video, games and social games and the combination of music and so on. Application of this paper would like to combine with the music game developed Android-based song guessing game. Not only allows us to listen to music enjoyment, but also to interact through the game. This combination of many fields, just proof of application for our incredible innovation. Key words:android;Guess the song;game目 录1 综述国内外android音乐应用技术研究现状11.1 国内android音乐应用技术研究现状11.2 国外android音乐应用技术研究现状22 了解android猜歌游戏的开发环境及相关技术42.1 Android的简介及优势42.2 android系统架构62.3 Activity简介83 分析与设计android猜歌游戏93.1 可行性分析93.2 系统设计目标93.3 系统功能分析104 设计编写android猜歌游戏的用户界面134.1主界面134.2 其他的界面175 实现android猜歌游戏逻辑205.1 MainActivity205.2 Util工具类375.3 音乐播放类MyPlayer41参考文献44致 谢45外文文献46中文翻译531 综述国内外android音乐应用技术研究现状近几年,随着智能手机的出现及迅速大规模地普及世界,与智能手机相生的手机应用在不断地推陈出新,手机应用已经成为我们工作中,学习中,生活中不可缺少的一部分。其中,占全球智能手机市场绝大一部分的android手机中的android应用已经达到数千万个。社交,购物,地图,游戏,音乐,电影,各种各样的android应用不断地出现在我们面前,应用的经常性地更新又会给我们带来许多甚至难以想象到的,更加便利的功能。其中,有关音乐的app经过几年的发展,已经成熟了许多,下面我们将从国内和国外两个角度,来研究android音乐应用技术现状。1.1 国内android音乐应用技术研究现状国内android音乐应用大致分为如下几种类型:1. 听音乐app2. 手机播放我们自己喜欢的歌曲已伴随我们度过很多时间,写作业时听会儿音乐能让我们放松身心,促进大脑思考;坐车时听音乐能减轻我们的疲劳;跑步时听音乐能促进我们的运动。总的来说,听音乐早已成为了我们的日常生活中的一部分。从随身听,MP3开始,就早已注定我们一生要与听音乐为缘。3. 国内目前的比较流行的听音乐的android应用有:4. QQ音乐:歌曲数目比较多的app,UI界面也设计的很好看,使用用户很多,但是音乐品质一般,想听比较好的音乐品质需要开通绿钻。网易云音乐:发展迅速的网易听音乐的app,用户体验极好,音乐品质很好,可以在登录自己的账号后拥有自己的圈子,听到什么好听的歌曲可以分享到自己的圈子里,每首歌曲的评论区极具特色,很多人都喜欢把自己跟这首歌曲之间有过的事分享给大家,而其歌单也大大地提高了此app的人气,总的来说是一款社交性很强,音乐品质很高的app。(歌曲数目相比QQ音乐app略少)酷狗音乐:相比其他音乐app,总体上来说都很不错,特点是增加了直播,音乐品质也很好。(立体音效)echo回声:出现不到两年,发展迅速的音乐app。首先,整体UI设计都给人很舒服的感觉,打开后,可以看到有3d音乐馆,我们可以在里面听到许多立体声的声音,包括各种情景下的声音,音效,以及很多不错的ASMR。只为用户推荐好的音乐,其最具特点的是增加了弹幕,更为此app增加了互动性。唱歌app目前比较火的唱歌app有:唱吧:打开app后选择自己喜欢的歌,就可以唱了,可以进行合唱,有很多种的排行榜,总能让自己发掘到喜欢的歌曲及其人,在喜欢的歌曲下评论留言,给这首歌曲送花。关注后可以看到他发的动态,总的来说是一款社交性很强,用户比较多的app。全民k歌:腾讯推出的唱歌app,发展迅速,因为用户基本都是QQ或微信用户,参与性,互动性很高,总体上来说很好。此外,还有麦唱,酷我k歌,唱k,移动练歌房等唱歌app都很不错。有关唱歌的app除了这些专门用来唱歌的app之外,还有一些相关联的app,如:直播系列:随着现在人气火爆的直播,很多主播直播时主要会给大家唱歌,可以发弹幕,互动性,即时性很强。贴吧:楼主发帖唱歌,看到的人可以回复唱歌,互动性很强。与贴吧相类似的还有微信群,QQ群,社区等等。音乐游戏app将游戏和音乐想结合而推出的音乐游戏app在刚推出后就迅速的增加人气,饱受欢迎。大致有如下几款最为火爆:节奏大师:手机上的劲舞团,用户选了歌曲后,通过点击上下左右来跟随音乐节奏进行游戏,腾讯旗下的app,社交性也很强,歌曲数目也随着更新现在有很多,有简单难度的歌曲也有极为困难的歌曲,是一款人气火爆的游戏app。疯狂猜歌:通过播放歌曲的片段旋律来猜歌名,从很多待选字中找出歌名,答对进入下一关。可以说是音乐类游戏史上极大的创新型游戏,在刚出来后就极为火爆。本文主要开发的猜歌游戏app就与此相似。1.2 国外android音乐应用技术研究现状目前国外受欢迎的android音乐app大致有以下几款:poweramp:是国外目前最为火爆的android音乐app之一,其特色是通过使用均衡器来细微的调节音效,就会有很大的不同,将播放音乐体验做到了极致,是国外音乐播放app的不错的选择。hiki player:是一款通过文件夹播放音乐的app。其特点是app大小非常小,给一些android本机性能不是很好的用户提供了很大的便利。界面简洁美观,在播放音乐时,会根据正在播放的音乐所属的专辑封面的色调来改变app按钮的配色。非常的人性化。wiizm player:韩国的音乐app,UI界面设计的很美观,交互性很好,可以给歌曲评分。n7 player:会先对所有歌曲进行扫描,出现所有歌曲的专辑封面,可以通过手势操作把界面缩小放大,缩小后会把专辑封面改变成歌曲名。除了这几款国外音乐app外,还有walkman,googlemusic等等。总而言之,国外音乐app都有一个相比国内音乐app的特色:每一款app都会有属于自己的UI特点,不会去模仿其他app的UI,UI占了一款app生命的一半,有特点的UI会先吸引用户去体验,因而在此特点上国外音乐app发展的有属于自己的优势。452 了解android猜歌游戏的开发环境及相关技术2.1 Android的简介及优势Android是Google在2007年11月宣布的基于Linux平台的开源手机操作系统的名称,而在Android系统底层方面,Android使用C/C+作为开发语言。该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的解决方案。图2-1 Android图标Android目前的优势如下:1、Android价格占优 价廉性能并不低消费者选择产品,价格是必然要考虑的一大因素,iphone虽好,但是价格让一般人望而却步。苹果就像是宝马、奔驰,虽然大家都认为它很好,但是一般人消费不起,只有看的份。而Android,如同大众,满大街跑的都是,不仅如此,还有一些型号是可以与宝马、奔驰相媲美的。虽然Android平台的手机价廉,但是其性能却一点也不低廉,触摸效果并不比苹果差到哪里去。Android平台简单实用,无论是功能还是外观设计,都可以与苹果一决高下。当消费者考虑价格因素之后,在数量众多的android手机中,消费者总是会找到一款满意的Android手机取代价格高昂的iPhone。2、应用程序发展迅速智能机玩的就是应用,虽然现在Android的应用还无法与苹果相竞争,但是随着Android的推广与普及,应用程序数在成数量级增长,Android应用在可预见的未来是有能力与苹果相竞争的。而来自Android应用商店最大的优势是,不对应用程序进行严格的审查。在这一点上优于苹果。3、智能手机厂家助力苹果的自我中心是它成功的一大法宝,从硬件到软件,到其独特的推广方式。苹果形成了一个很好的很完整的产业链。在一个封闭的圈子中创造一个又一个的奇想,让消费者的体验得到了很大的满足。但是这样并不能使其长期占据有利位置。现在,世界很多智能手机厂家几乎都加入了Android阵营,并推出了一系列的Android智能机。摩托罗拉、三星、HTC、LG、Lumigon等厂家都与谷歌建立了Android平台技术联盟。厂商加盟的越多,手机终端就会越多,其市场潜力就越大。Android智能机最近6个月在美国市场的占有率足以说明这一点。4、运营商的鼎力支持在国内,三大运营商是卯足了劲的推出Android智能机。联通的“0元购机”,电信的千元3G,移动的索爱A8i定制机,都显示了运营商对Android智能机的期望。在美国,T-Mobile、Sprint、AT&T和Verizon全部推出了Android手机。此外,日本的KDDI,NTT DoCoMo,Telecom Italia(意大利电信)、T-Mobile (德国)、Telefnica( 西班牙)等众多运营商都是Android的支持者。有这么多的运营商支持Android,自然会占据巨大的市场份额。相对于Android的运营商联盟,只有AT&T一家运营商销售iPhone。而苹果其特有的自我封闭性,无论是对手机厂商还是对运营商,都带来了一定的威胁性。手机联盟的形成,在一定程度上直指苹果。5、机型多 硬件配置优自从谷歌推出Android系统以来,各大厂家纷纷推出自己的Android平台手机,HTC、索尼爱立信、魅族、摩托罗拉、夏普、LG、三星、联想等等,每一家手机厂商都推出了各自的Android手机,机型多样,数不胜数。摩托罗拉的Droid X、三星的Galaxy,HTC从开始的T-Mobile G1到当前的 EVO 4G,每一款都有着优秀的配置,都有可说之处。6、系统开源 利于创新苹果的自我封闭性,使其创新必须源自内部。而Android是开源的,允许第三方修改,这在很大程度上容许厂家根据自己的硬件更改版本,从而能够更好的适应硬件,与之形成良好的结合。相比于苹果的封闭,开源能够提供更好的安全性能,也给开发人员提供了一个更大的创新空间,从而使Android版本升级更快。2.2 android系统架构android的系统架构和其操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。图2-2 Android系统架构1.应用程序:Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。2.应用程序框架:开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括;丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。3.系统运行库1)程序库Android 包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:2)Android 运行库Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 dx 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。Linux 内核:Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。2.3 Activity简介Activity是android最常用的组件,是应用程序的表示层,Activity一般通过View来实现应用程序的用户界面,相当于一个屏幕,用户与程序的交互是通过该类实现的。 Activity类创建了一个窗口,开发人员可以通过 setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。Activity的生命周期主要包含三个状态,各种状态之间的切换是通过各种回调方法实现。处于运行态的Activity拥有焦点,正在与用户进行交互,该状态的Activity可以为用户提供信息并接收用户的事件响应。而处于暂停态的Activity失去了焦点,一般被运行态的Activity替代,当前台显示的Activity不是全屏时,可以见到暂停态的Activity。而处于停止态的Activity没有焦点,并且是不可见的,系统可以随时将其释放。3 分析与设计android猜歌游戏将歌曲与游戏想结合,在用户享受到一段熟悉的音乐后添加互动,让用户猜出对应歌曲名称,来加深对此歌曲的印象。分析与设计android猜歌游戏时,首先应对其可行性进行分析,来对此app的构思有个大致的了解,以及有相应的设计思路。然后分析系统设计目标,目的是要设计出什么样的app。其次对系统各个功能模块进行分析,将android猜歌游戏app细化,拆分成一个个要实现的功能。最后对数据存储方式进行设计,当用户退出后再次进入app时,猜歌游戏将出现用户上次离开时所过到的关卡以及所剩余金币数。3.1 可行性分析在现在的Android音乐应用中,我们主要熟悉的还是占音乐应用市场绝大部分的听音乐的app,这类应用主要用来播放音乐,其他的小功能再怎么样的细化也都是与听音乐相关联的,手机上听音乐并不是什么新的,很稀奇的实现。而智能手机支持的很多功能以及Android应用的可实现性还有Android应用市场的不断推陈出新的变化都在提醒我们,音乐应用不单单只是听歌而已,而如今出现的很多音乐类的app,有将音乐与唱结合起来的,有音乐与游戏相结合的等等。音乐与游戏想结合可以推出许多很有趣的应用,Android猜歌游戏是将音乐与游戏结合起来,我们在播放一段音乐时,会出现几行字,这几行字中会包含相对应的歌曲名,歌曲名会事先打乱放进这些字中,而其他的字是由我们随机从比较熟悉的汉字中事先抽取出来的,歌曲名以及歌曲可以事先用一个方法保存,而其他汉字可以通过一个方法随机出现一个汉字来实现。当我们想不起来时,可以有提示答案或者去掉错误答案的功能,将帮助我们进行游戏的过关,音乐听完后可以点击播放再次听。总之,Android猜歌游戏能让我们在不需要网络的情况下,边听音乐边玩的app,娱乐性,竞技性都极高,趣味性很强。3.2 系统设计目标1.用户界面友好良好的用户界面会使一款app变得更简单,易理解,也更容易进行操作。在设计Android猜歌游戏应用的UI时,首先要好看,选用的背景图片以及每个按键都精心设计选择,界面整体看上去要感觉很搭配,每个按键的位置,大小,以及将界面分解成几个大部分,再将每一部分下的组成设计好,来使界面看上去更美观,也能先吸引用户进行游戏。2.交互性强一款好的应用,首先交互性要强,用户可以进行单手操作,而节奏不至于太过紧张,而让用户注意力太过集中又大大失去了游戏的娱乐性,本游戏设计的目标简单而不失趣味性,节奏跟随每段音乐轻松带动,适用于绝大多数场合,这才能大大提高系统交互性。3.音乐素材随时代潮流每一关的音乐都紧随时代潮流,有经典的让我们回味无穷的音乐,也有如今流行的歌手下的歌,总之,每一首歌曲都会使我们百听不厌,不断地想再次播放重温歌曲,极大的增加了游戏的可玩性。4.防作弊如今,只要提到游戏就会有相对应的外挂出现,而这些外挂出现的原因恰恰是体现了游戏的漏洞还是有很多,系统设计的还不是很完善,促使在实现后将这些漏洞放大出来,漏洞越多我们后期系统的维护上又极大的提高了难度。软件工程提醒我们在系统设计时要尽可能的考虑到每个可能出现的问题。一款游戏如果不尽快的将这些漏洞排除,外挂消失,会大大的降低游戏的生命周期。在此游戏当中最需要考虑的就是金币和关卡数,因此我们在每次退出时都会进行存储。3.3 系统功能分析分析Android猜歌游戏,该系统整体框架如下:图3-1 Android猜歌游戏系统整体框架用例图:图3-2 Android猜歌游戏系统用例图猜选模块活动图:图3-3 猜选模块活动图金币消费活动图:图3-4 金币消费活动图4 设计编写android猜歌游戏的用户界面4.1主界面主界面的设计思路是先用动画播放一段音乐,给出一些带选择的文字,在文字中选出正确答案,也就是这首歌的歌名,答对进入正确界面,继续点击进入下一关,打错的话让已选框中的文字闪烁提醒,重新选择。先将顶部栏,唱片栏,文字栏三个UI界面设计好,然后加入到主界面中,三个浮动按钮也设计成一个UI界面,这些组合到一起排列起来就成了主界面。主界面采用FrameLayout(保证组件之间的相互镶嵌搭配,使得界面看上去更加的合理),由三部分组成。第一部分采用LinearLayout垂直排列水平居中,由三小部分组成:顶部标题栏(top_bar),播放的唱片栏(pan)以及文字框(name_select)。第二部分是浮动按钮(float_buttons),第三部分是答案正确的界面(answer_right)。图4-1 Android猜歌游戏主界面顶部标题栏top_bar采用RelativeLayout,由两部分组成,返回按钮(back_button)以及金币布局(layout_coins),采用FrameLayout,都垂直居中。金币布局又由三部分组成:金币按钮,金币图标以及金币数目(txt_coins)。金币数目采用TextView,字体大小为20sp,颜色为白色,类型为加粗。图4-2 顶部标题栏播放的唱片栏pan采用LinearLayout垂直分布。由两部分组成,第一部分显示歌曲栏,采用FrameLayout,由两部分组成:歌曲标题的图片ImageView以及歌曲文字TextView,文字设置layout_gravity为center,保证文字位于图片正中间。第二部分显示播放的唱片,采用FrameLayout,由四部分组成:唱片的盘片(pian),盘片上的光圈(game_disc_light),开始播放按钮(start_button)以及唱片的拉杆(bar),前三部分layout_gravity设置为center,拉杆设置为right。start_button的背景设置为”#00ffffff”,src放入图片(保证图片背景色为透明)。图4-3 播放的唱片栏由于很多按钮或者图片在点击和未点击状态下显示出的效果不同,所以都会在drawable文件夹下新建xml,下设置,在按钮或图片调用drawable:此xml文件名后就会出现相应的效果了。文字框name_select采用LinearLayout垂直分布。由三部分组成,第一部分放文字选择容器word_select_container,每一关歌曲名称字数不一定都相同,所以文字选择框的数量是在动态变化生成的,第二部分图片game_line来做分隔,第三部分则是待选文字框(gridview),采用自定义View。src下新建一个MyGridView类,继承GridView类,新建一个内部类MyGridAdapter继承BaseAdapter类(MyGridView所需的适配器),需要实现四个方法:getCount(返回集合的大小),getItem(int position)(返回集合中position处的元素),getItemId(int position)(返回指定元素的位置position),以及getView(int position, View convertView, ViewGroup parent),该方法具体实现如下:final WordButton holder;if (convertView = null) convertView = Util.getView(context,R.layout.self_ui_gridview_item);holder = arrayList.get(position);加载动画: scaleAnimation = AnimationUtils.loadAnimation(context,R.anim.scale);为动画设置延迟时间: scaleAnimation.setStartOffset(position * 100);holder.index = position;holder.viewButton = (Button) convertView.findViewById(R.id.item_btn);holder.viewButton.setOnClickListener(new OnClickListener() public void onClick(View v) wordButtonClickListener.onWordButtonClick(holder););convertView.setTag(holder); else holder = (WordButton) convertView.getTag();holder.viewButton.setText(holder.wordString);播放动画:convertView.startAnimation(scaleAnimation);return convertView;浮动按钮float_buttons采用RelativeLayout,由三部分组成:1.所在关卡数:采用FrameLayout,位于浮动按钮的顶部,水平居中。由ImageView和TextView组成,TextView存放目前所在关卡数。图4-4 所在关卡数2.答案提示删除:采用LinearLayout,位于浮动按钮左边,垂直居中,垂直排列。有两部分组成:答案删除FrameLayout(答案删除按键ImageButton,位于底部的金币图片ImageView,位于底部右侧的使用答案删除所需的金币数目TextView),答案提示FrameLayout(答案提示按键ImageButton,位于底部的金币图片ImageView,位于底部右侧的使用答案提示所需的金币数目TextView)。由于答案提示和删除金币数目是个可能会修改的常量,所以在res/values/strings的resources下添加两个常量,方便以后修改。图4-5 答案提示删除3.分享按键:位于浮动按钮的右侧,垂直居中。将此游戏分享给好友。图4-6 分享按键答案正确界面pass_view采用LinearLayout,垂直排列。最上方您已击败,其次文本框答案正确,其次显示所过的关卡数,其次ok,奖励金币的数目,最下方是俩按键,第一个按键是下一题,点击进入下一关,第二个按键是分享到微信。答案正确界面在正常情况下的visibility为gone,只有当用户输入答案正确时visibility为visible,以显示出答案正确界面。图4-7 答案正确界面4.2 其他的界面通关界面all_pass_view:当所有关都过后出现的界面,采用LinearLayout垂直分布:最上方是top_bar,下方都是一些添加的图片。图4-8 通关界面对话框dialog_view:当点击答案提示或者答案删除按键时会先弹出的提示对话框,确定要花费金币去删除一个错误答案/获得一个答案提示吗?点是则会扣除相应的金币数量来删除错误答案/获得答案提示,点否则会退出对话框,不获取帮助。图4-9 提示对话框图4-10 提示对话框文字待选框里的每个按键ui的设置item_btn:一个button,文字黑色,大小25sp。5 实现android猜歌游戏逻辑5.1 MainActivityMainActivity中设置的一些常量: /* 答案状态-正确 */public final static int STATUS_ANSWER_RIGHT = 1;/* 答案状态-错误 */public final static int STATUS_ANSWER_WRONG = 2;/* 答案状态-不完整 */public final static int STATUS_ANSWER_LACK = 3;/ 闪烁次数public final static int SPASH_TIMES = 6;public final static int ID_DIALOG_DELETE_WORD = 1;public final static int ID_DIALOG_TIP_ANSWER = 2;public final static int ID_DIALOG_LACK_COINS = 3;唱片相关动画:通过使用Animation来实现Android动画,猜歌游戏总共有三个动画:刚开始拨杆向下滑动(BarAnim),BarAnim停止时唱片开始旋转(PanAnim),播放音乐,当音乐播放完毕后,PanAnim停止拨杆回到原来的位置(BarOutAnim),动画结束。动画Animation通过LinearInterpolator线性控制其播放速度,使用方法如下:先通AnimationUtils的loadAnimation方法来初始化动画(该方法中有两个参数:上下文和动画的主要参数加载),然后给每个动画使用setInterpolator设置线性控制,最后给每个动画设置监听器。监听器中有三个方法,动画开始,结束和重复时调用的方法,当在某一时刻要使用动画时,调用需要播放的部件下的startAnimation方法(参数放入相应的动画)。动画的主要参数有:fromDegrees:旋转的初始角度。toDegrees:旋转的目的角度。duration:动画进行的时间,单位为毫秒。pivotX:旋转的X轴初始值,百分比形式。pivotY:旋转的Y轴初始值,百分比形式。private Animation PanAnim;private LinearInterpolator PanLin;private Animation BarAnim;private LinearInterpolator BarLin;private Animation BarOutAnim;private LinearInterpolator BarOutLin;start按键事件:private ImageButton start_button;过关界面:private View passView;唱片控件:private ImageView pian;拨杆控件:private ImageView bar;当前动画是否在运行:private boolean isRunning = false;文字框容器:private ArrayList allWords;private ArrayList btnSelectWords;private MyGridView myGridView;已选择文字框UI容器:private LinearLayout viewWordsContainer;当前的歌曲:private Song currentSong;当前关的索引:private int currentStageIndex = -1;当前金币的数量:private int currentCoins = Const.TOTAL_COINS;金币view:private TextView viewCurrentCoins;当前关的索引:private TextView currentStagePassView;private TextView currentStageView;当前歌曲名称:private TextView currentSongNamePassView;private ImageButton imgbtn1;此Activity中OnCreate()方法如下:super.onCreate(savedInstanceState);getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);setContentView(R.layout.activity_main);读取游戏数据:int datas = Util.loadData(this);currentStageIndex = datasConst.INDEX_LOAD_DATA_STAGE;currentCoins = datasConst.INDEX_LOAD_DATA_COINS;初始化控件:pian = (ImageView) findViewById(R.id.pian);bar = (ImageView) findViewById(R.id.bar);myGridView = (MyGridView) findViewById(R.id.gridview);viewCurrentCoins = (TextView) findViewById(R.id.txt_coins);viewCurrentCoins.setText(currentCoins + );注册监听:myGridView.registOnWordButtonClick(this);viewWordsContainer=(LinearLayout)findViewById(R.id.word_select_container);初始化动画:唱片的动画:PanAnim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate);PanLin = new LinearInterpolator();PanAnim.setInterpolator(PanLin);PanAnim.setAnimationListener(new AnimationListener() public void onAnimationStart(Animation animation) public void onAnimationRepeat(Animation animation) public void onAnimationEnd(Animation animation) bar.startAnimation(BarOutAnim); );拨杆先播放动画,监听播放结束时开始播放唱片的动画:BarAnim = AnimationUtils.loadAnimation(MainActivity.this,R.anim.rotate_20);BarLin = new LinearInterpolator();BarAnim.setInterpolator(BarLin);BarAnim.setFillAfter(true);BarAnim.setAnimationListener(new AnimationListener() public void onAnimationStart(Animation animation) public void onAnimationRepeat(Animation animation) public void onAnimationEnd(Animation animation) pian.startAnimation(PanAnim););唱片动画结束时拨杆回到原来位置的动画:BarOutAnim=AnimationUtils.loadAnimation(MainActivity.this,R.anim.rotate_r_20);BarOutLin = new LinearInterpolator();BarOutAnim.setInterpolat

温馨提示

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

评论

0/150

提交评论