《android创新实验报告3590.docx》由会员分享,可在线阅读,更多相关《android创新实验报告3590.docx(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目编号 创新实验报报告实验项目名名称 基于Anndroiid手机操操作系统的的游戏软件件开发学 生 姓姓 名 石皓程 樊樊峰辰 学生学号 002111122188/02111122330 所在学院 电电子电气工工程学院 指导教师 施一萍 目录一、 实验目的二、 实验方案2.1总体体设计思想想 2.22实验流程程(步骤) 2.33实验环境境 2.44实验分工工三、 实验过程3.1Anndriood软件开开发环境搭搭建3.2模块块划分3.3游戏戏主界面模模块3.4游戏戏控制模块块3.5模块块实现原理理3.51游游戏界面模模块实现3.52游游戏控制模模块实现3.6游戏戏界面具体体实现 3.661蛇
2、身、食食物和墙的的实现 3.662处理键键盘事件 3.663 TiileViiew类的的设计 3.664 SnnakeVView类类的设计 3.665 ReefresshHanndlerr类的设计计3.7程序序调试与运运行四、 实验结果和和分析五、 参考文献六、 附录一 代代码清单七、 附录二 环环境搭建和和运行 一 实验目的贪吃蛇游戏戏一款非常常经典的手手机游戏,因因为它比较较简单有趣趣,无论老老少都比较较适合。贪贪吃蛇的设设计对每一一个Javva语言设设计者进行行语言提高高和进阶都都是一个很很好的锻炼炼机会。 贪吃蛇蛇游戏的设设计比较复复杂,它涉涉及面广、牵牵涉方面多多,如果不不好好考虑虑
3、和设计,将将难以成功功开发出这这个游戏。在在这个游戏戏的设计中中,牵涉到到图形界面面的显示与与更新、数数据的收集集与更新,并并且在这个个游戏的开开发中,还还要应用类类的继承机机制以及一一些设计模模式。因此此,如何设设计和开发发好这个贪贪吃蛇游戏戏,对于提提高Javva开发水水平和系统统的设计能能力有极大大的帮助。在在设计开发发过程中,需需要处理好好各个类之之间的继承承关系,还还要处理各各个类相应应的封装,并并且还要协协调好各个个模块之间间的逻辑依依赖关系和和数据通信信关系。本项目在AAndrooid平台台下,使用用Javaa语言,AAndrooid开发发技术开发发一款界面面友好,功功能齐全的的
4、贪吃蛇游游戏。二 实验方案2.1总体体设计思想想 本软件是是针对贪吃吃蛇小游戏戏的JAVVA程序,利利用上、下下、左、右右方向键来来改变蛇的的运动方向向,长按某某个方向键键后,蛇的的运动速度度会加快,在在随机的地地方产生食食物,吃到到食物就变变成新的蛇蛇体,碰到到壁或自身身则游戏结结束,否则则正常运行行游戏,在在到达固定定的分数后后,游戏速速度会加快快。2.2实验验流程Java编编程语言Androoid软件件的开发环环境搭建(Eclipse开发软件、Android SDK开发框架、Android Development Tool开发环境)Androoid程序序的框架结结构游戏软件的的开发2.3
5、实验验环境 实验地地点在实训训楼1号楼楼计算中心心。计算中中心具有较较好的实验验设备,拥拥有较高配配置的PCC机3000台(Inntel酷酷睿2 QQ83000四核处理理器、2GG内存),都都可以接入入校园网和和Inteer网,完完全能满足足该创新实实验项目的的需要。2.4实验验分工 李 琦:环境境的搭建和和游戏的编编译 邵彧韬韬:截图和和后期的制制作三 实验过程3.1Anndriood软件开开发环境搭搭建 采用eeclippse开发发工具在winddows77下进行,基于安卓卓2.2操操作系统。 环境搭建:1. JJDK安装装 2. EEclippse安装装 3. AAndrooid SSD
6、K安装装 4. AADT安装装创建AVVD软件总体设设计 工程程中包括44个Acttivitty,分别别为Snaake(主主界面)、GGame(游游戏界面)、HHelp(游游戏说明界界面)、AAuthoorVieew(作者者信息界面面),通过过不同Acctiviity之间间的转换实实现不同界界面之间的的切换。SSnakee(Acttivitty)继承承了SnaakeViiew类,SSnakeeVieww类继承了了TileeVieww类。TiileViiew类继继承了Viiew其实 SSnakee的工程蛮蛮简单的,源源文件就三三个: SSnakee.javva SnnakeVView.javaa
7、 TilleVieew.jaava。 Snakke类是这这个游戏的的入口点, TitlleVieew类进行行游戏的绘绘画, SSnakeeVieww类则是对对游戏控制制操作的处处理。 CCoorddinatte, RRefreeshHaandleer是 22个辅助类类,也是 SnakkeVieew类中的的内部类。其其中, CCoorddinatte是一个个点的坐标标( x, y), RefrreshHHandller将 RefrreshHHandller对象象绑定某个个线程并给给它发送消消息。如下下图: 图3.13.2模块块划分从面向对象象程序设计计的角度,本本项目总体体地可以分分为游戏界界面
8、模块、数数据存储模模块和控制制模块。如下图所示示:游戏数据存储模块贪吃蛇游戏游戏主界面模块游戏控制模块图3.2游戏总体模块3.3游戏戏主界面模模块游戏界面主主框架主要要包括游戏戏图形区域域界面、游游戏的开始始按钮、暂暂停按钮、游游戏的退出出按钮。游戏界面主主框架的主主要结构图图如图3.3所示。游戏的主界面架游戏图形区域界面(即游戏画布)游戏控制按钮界面图3.3 游戏主界面3.4 游游戏控制模模块 游戏戏控制模块块主要通过过手机键盘盘上的按钮钮来控制游游戏的开始始、游戏的的暂停、游游戏的退出出这三个功功能以及控控制游戏分分数变化。在在这个模块块中,需要要给各个按按钮添加响响应事件代代码,来对对上
9、述的功功能加以进进一步的实实现。游戏控制模模块的主要要框架如图图3.4所所示。游戏控制模块游戏的移动速度功能能游戏的暂停功能游戏的重新开始图3.4 游戏控制模块框架3.5模块块实现原理理3.5.11游戏界面面模块实现现1.实现游游戏背景本游戏采用用Actiivityy作为游戏戏背景的载载体,在AAndrooid中一一个Acttivitty就相当当于winndowss中的一个个窗口,AActivvity上上可以放置置许多类型型的控件。一个activity主要有三个状态:当在屏幕前前台时(位位于当前任任务堆栈的的顶部),它它是活跃或或运行的状状态。它就就是相应用用户操作的的actiivityy。
10、当它失去焦焦点但仍然然对用户可可见时,它它处于暂停停状态。即即是:在它它之上有另另外一个aactivvity。这这个acttivitty也许是是透明的,或或者未能完完全遮蔽全全屏,所以以被暂停的的actiivityy仍对用户户可见。暂暂停的acctiviity仍然然是存活状状态(它保保留着所有有的状态和和成员信息息并连接至至窗口管理理器),但但当系统处处于极低内内存的情况况下,仍然然可以杀死死这个acctiviity。如果它完全全被另一个个actiivityy覆盖是,它它处于停止止状态。它它仍然保留留所有的状状态和成员员信息。然然而它不在在为用户可可见,所以以它的窗口口将被隐藏藏,如果其其它地
11、方需需要内存,则则系统经常常会杀死这这个acttivitty。如果一个aactivvity处处于暂停或或停止状态态,系统可可以通过要要求它结束束(调用它它的 fiinishh() 方方法)或直直接杀死它它的进程来来将它驱出出内存。当当它再次为为用户可见见的时候,它它只能完全全重新启动动并恢复至至以前的状状态。当一个acctiviity从这这个状态转转变到另一一个状态时时,它被以以下列prroteccted方方法所通知知:void onCrreatee(Bunndle saveedInsstancceStaate) 、voiid onnStarrt() 、voiid onnResttart()
12、、vvoid onReesumee() 、vvoid onPaause() 、vvoid onSttop() 、vooid oonDesstroyy()2. 实现蛇的身身体蛇可以看做做是一个个个节点组成成的,因此此可以用一一个链表来来存储蛇身身的元素,在画蛇时时遍历这个个链表讲里里面的元素素一一画出出,这样就就实现了一一条蛇.3. 实现蛇的移移动用一个tiimer(定时器)来不断地地刷新游戏戏画面,每每刷新一次次就再蛇头头的前面(链表的尾尾部)增加加一个新元元素,同时时把蛇尾的的一个元素素删掉,这这样从视觉觉上看起来来就实现了了蛇的移动动.4. 实现蛇吃食食物 蛇移移动的过程程中如果蛇蛇头的坐
13、标标与食物出出现的坐标标重合了,那么就在在蛇头的位位置增加一一个元素同同时不删除除蛇尾的最最后一个元元素,这样样蛇每迟到到一个食物物身体就会会变长一截截.3.5.22 游戏控控制模块实实现1. 实现操作蛇蛇的移动方方向在Andrroid系系统中,手手机上的每每个按钮都都会有一个个对应的键键值跟它对对应,所在在可以给对对应的按钮钮设置监听听器OnCClickkListtenerr,监听器器是一个接接口,该接接口中有一一个方法oonCliick(VView v)。当当按钮被点点击的时候候系统会自自动调用该该监听器的的onCllick(Vieww v)方方法。所以以实现游戏戏控制的具具体代码将将被写
14、到该该方法中。因为本游戏戏中不允许许蛇向与蛇蛇头相反的的方向移动动,所以当当用户操作作时需要判判断用户操操作的方向向是不是跟跟规则冲突突,若冲突突则无视该该操作,若若不冲突则则响应该操操作,所以以需要用一一个变量来来记录蛇头头的当前方方向。2. 实现游戏暂暂停 在Acctiviity的生生命周期中中,有一个个onPaause()方法.该方法在在Actiivityy变得不可可见的时候候被系统自自动调用.在玩游戏戏过程中,如如果有来电电或是其它它事件中断断,这时应该该把当前状状态保存。以以便返回时时,还可以以继续玩游游戏。这就就使用onnSaveeInsttanceeStatte实现保保存当前状状
15、态。3. 实现游戏恢恢复Activvity生生命周期的的onRessume()方法.该方法在在Actiivityy从不可见的的状态下变变得可见时时被系统自自动调用.在用户接接完电话或或者在暂停停状态下触触摸屏幕后后可以在该该生命周期期方法中对对游戏进行行恢复.4. 实现游戏退退出当一个Acctiviity退出出或者被调调用finnish()方法后后,系统会会调用其生生命周期方方法onDDestrroy().当用户户退出游戏戏时,可以以在这个方方法中对资资源进行释释放.3.6游戏戏界面具体体实现3.6.11 蛇身、食食物和墙的的实现前面已经提提过,蛇身身的数据用用一个链表表来存储,具具体我使用用
16、ArraayLisst来实现现。蛇身的的每个元素素、食物和和墙都是一一个坐标对对象,画这这些东西的的时候只需需要把它们们的坐标传传给画的方方法就行了了。这里需需要引进一一个坐标类类Coorrdinaate,这这是一个包包括两个参参数,用于于记录X轴轴和Y轴简简单类,其其中包括一一个比较方方法,该方方法用于判判断蛇头于于食物或者者墙是否重重合.该类类的代码如如下:classs Coorrdinaate ppubliic int x; ppubliic int y; ppubliic Cooordiinatee(intt newwX, iint nnewY) xx = nnewX; yy = nn
17、ewY; ppubliic boollean equaals(CCoorddinatte otther) iif (x = otheer.x & y = otheer.y) rreturrn truee; rreturrn falsse; ppubliic Sttringg toSStrinng() rreturrn Cooordinnate: + x + , + y + ; 蛇身的初始始长度我设设置为5,nnew 55个Cooordinnate的的对象放入入ArraayLisst中。整整个屏幕可可以看做是是有很多个个网格组成成的,而蛇蛇就在这些些网格中移移动。用一一个二维数数组intt mT
18、iileGrrid来存存储网格的的坐标,将将蛇身、食食物或者墙墙的坐标传传到该数组组中,onnDraww方法按照照该数组中中的坐标将将屏幕相应应位置的网网格填充成成位图。画画蛇身、食食物、墙的的方法为: ppubliic voidd onDDraw(Canvvas ccanvaas) ssuperr.onDDraw(canvvas); ffor (int xx = 00; x mXXTileeCounnt; xx +) ffor (int yy = 00; y 00) ccanvaas.drrawBiitmapp(mTiileArrraymTilleGriidxy, mXOfffsett +
19、xx * mmTileeSizee, mYOfffsett + yy * mmTileeSizee, mPaiint); 3.6.22处理键盘盘事件使用Vieew类的oonKeyyDownn方法,该该方法由系系统监听调调用。根据据按键的值值处理响应应事件,该该方法中解解决了反向向移动的问问题。mDDirecctionn 为当前蛇蛇头的方向向,mNeextDiirecttion 为按键对对应的方向向,按键按按下后会先先判断当前前方向是否否跟下一方方向相反,若若相反则不不响应事件件。具体代代码如下: ppubliic boollean onKeeyDowwn(innt keeyCodde, KKe
20、yEvvent msg) iif (kkeyCoode = KeeyEveent.KKEYCOODE_DDPAD_UP) iif (mMoode = REEADY | mMMode = LLOSE) iinitNNewGaame(); ssetMoode(RRUNNIING); uupdatte(); rreturrn (truue); iif (mMoode = PAAUSE) ssetMoode(RRUNNIING); uupdatte(); rreturrn (truue); iif (mDiirecttion != SSOUTHH) mmNexttDireectioon = NORTT
21、H; rreturrn (truue); iif (kkeyCoode = KeeyEveent.KKEYCOODE_DDPAD_DOWNN) iif (mDiirecttion != NNORTHH) mmNexttDireectioon = SOUTTH; rreturrn (truue); iif (kkeyCoode = KeeyEveent.KKEYCOODE_DDPAD_LEFTT) iif (mDiirecttion != EEAST) mmNexttDireectioon = WESTT; rreturrn (truue); iif (kkeyCoode = KeeyEveen
22、t.KKEYCOODE_DDPAD_RIGHHT) iif (mDiirecttion != WWEST) mmNexttDireectioon = EASTT; rreturrn (truue); rreturrn supeer.onnKeyDDown(keyCCode, msgg); if (dirrectiion != cuurrenntDirrectiion) & !needdUpdaate)/ 取出出列表中的的最后一个个元素(蛇蛇的头部)WormLLink sl = (WoormLiink)wworm.lasttElemment();int xx = ssl.geetEnddX();
23、int yy = ssl.geetEnddY();/ 不同同的运动方方向坐标的的改变也不不一样switcch (ddirecctionn) case UP: / 当当这段向上上运动的时时候if (ccurreentDiirecttion != DDOWN) y-; needdUpdaate = truue; breakk;case DOWNN: / 当这段段向下运动动的时候if (ccurreentDiirecttion != UUP) y+; needdUpdaate = truue; breakk;case LEFTT: / 当这段段向左运动动的时候if (ccurreentDiirect
24、tion != RRIGHTT) x-; needdUpdaate = truue; breakk;case RIGHHT: / 当这这段向右运运动的时候候if (ccurreentDiirecttion != LLEFT) x+; needdUpdaate = truue; breakk; / 当更更改方向后后需要更新新if (nneedUUpdatte = truue) worm.addEElemeent (new WormmLinkk (x, y, 0, ddirecctionn);curreentDiirecttion = diirecttion; 3.6.33 TilleVieew类
25、的设设计TileVView是是游戏的界界限,即蛇蛇头若触碰碰到界限则则游戏结束束。因为界界限也需要要被现实到到屏幕上,所所以TilleVieew需要继继承anddroidd.vieew.Viiew类。aandrooid.vview.Vieww类是描绘绘块状视图图的基类。VView会会绘制一个个包含Drrawinng是evvent事事件的方形形块。Viiew是所所有与用户户交互的组组件的Wiidgetts的基类类(Butttonss,texxtFieeld等),Vieew的子类类ViewwGrouup是laayoutts类的基基类,laayoutts类可以以包含其他他的Vieew/ViiewGr
26、roup组组件并且定定义展示的的属性。实现一个VView,首先需要要实现框架架中一些所所有Vieews公用用的方法。不不必重写所所有所有的的方法,可可以仅仅重重写onDDraw(andrroid.grapphicss.Cannvas)3.6.44 SnaakeViiew类的的设计SnakeeVieww是本游戏戏的业务逻逻辑类,该该类中包含含了游戏数数据和一些些处理数据据的方法以以及一些内内部类。SnakeeVieww的方法摘摘要:1、 判断按键的的方法在Andrroid手手机上,每每个按键都都会有一个个唯一的键键值与它对对应,可以以通过获得得键值来判判断哪个键键被按下了了并采取相相应的动作作。
27、2、 设置提示信信息的方法法通过程序判判断动态地地设置用户户提示信息息,如游戏戏结束。3、 在随机位置置出现食物物的方法通过随机数数在屏幕范范围内随机机出现一个个食物,但但是不允许许同一时刻刻有两个食食物存在。4、 刷新蛇的当当前位置的的方法主要用于刷刷新蛇的当当前位置5、 判断蛇是否否吃到食物物的方法因为食物和和蛇都会有有一个坐标标,所以可可以通过判判断蛇头坐坐标是否跟跟食物坐标标相等的方方法来判断断蛇是否吃吃到了食物物。3.6.55 ReffreshhHanddler类类的设计RefreeshHaandleer类需要要处理是否否需要重绘绘Snakke,所以以需要继承承继承anndroiid
28、.oss.Hanndlerr类。Handller类允允许你发送送和处理和和当前MeessaggeQueeue相关关的Messsagee类和Ruunnabble类。每一个Haandleer类都和和一个唯一一的线程(以及这个个线程的MMessaageQuueue)关联。当当你创建一一个新的HHandller类的的时候,它它就和创建建它的Thhreadd/Messsagee Queeue绑定定,也就是是说这个HHandller类会会向它所关关联的MeessaggeQueeue递送送Messsagess/Runnnablles并且且在该Meessagge/Ruunnabble从MMessaageQuu
29、eue出出列时候执执行它。在在这里我用用来调度可可能会被执执行的Meessagges和RRunnaabless。3.6.77逻辑处理理开始始初化蛇和苹果屏幕显示蛇和苹果位置蛇开始移动,后坐标覆盖前坐标是否有按键否根据上次方向更新坐标是根据按键不同在原坐标基础上改变蛇的坐标位置更新方向是否吃到苹果是蛇身加1否是否越界或撞到蛇身是游戏结束否图3.53.7程序序调试与运运行(1)游戏戏功能测试试经过在模拟拟器上的测测试,本软软件能书案案例实现其其功能,达达到了小蛇蛇在屏幕上上的移动,小蛇吃苹苹果,苹果果随机出现现的功能,当小蛇头头尾相撞或或与墙相撞撞时,游戏戏结束.这这些均在测测试中得到到验证。(2
30、)游戏戏控制测试试在测试过程程中,也着着重对游戏戏的控制功功能进行了了测试,游游戏是通过过方向键的的控制来实实现的,在在游戏刚开开始的阶段段,上下左左右四个方方位的控制制都很成功功,但随着着蛇移动的的速度越来来越快,按按键的控制制反应会出出现滞后,通通过分析,可可能是由于于蛇的运动动速度超过过了键盘的的反应速度度造成的,与与软件无关关,所以得得出结论,游游戏的控制制设计也是是成功的。(3)游戏戏界面测试试游戏运行之之后,就是是在画面中中出现蛇和和两个苹果果的初始位位置,并且且是静止的的,并且在在画面上还还会出现操操作提示“按上键开开始游戏”,游戏运运行过程中中,除了蛇蛇的运动之之外,界面面大题
31、没有有变化,分分别由绿色色矩形块的的围墙,黄黄色矩形块块的苹果和和红色矩形形块的蛇身身(蛇头为为黄色)组组成。游戏戏结束后,界界面处于暂暂停状态,提提示游戏结结束并显示示分数。(4)测试试结果通过对游戏戏软件的功功能测试,控制测试和界面测试。详细说是对游戏的开始新游戏、退出、查看最高成绩、计时、统计分数等功能进行测试,并测试程序的鼠标点击事件、菜单的响应及按键响应等事件,结论是该游戏软件能正确实现功能要求。要求输出的效果与预期的输出效果完全一致。 图33.6 游游戏前画面面图3.7 游戏中界界面图3.8 游戏结束束时画面四 实验结果与与分析(1)测试试结果通过对游戏戏软件的功功能测试,控制测试
32、和界面测试。详细说是对游戏的开始新游戏、 退出、 查看最高成绩、 计时、 统计分数等功能进行测试, 并测试程序的鼠标点击事件、菜单的响应及按键响应等事件,结论是该游戏软件能正确实现功能要求。要求输出的效果与预期的输出效果完全 一致。(2)分析析回顾这个设设计过程,我学到了了许多书本本上没有学学到的知识识。通过这这次自己制制作的软件件,丰富了了自己的实实践技能,扩展了本本专业的知知识面,使使我受益非非浅,同时时 也体验验到了搞软软件开发的的困难度。 在这次设设计的同时时,我又从从中学到了了许多东西西。 但由由于我对这这样的软件件开发还只只是一个开开始,了解解的不多,这这其中或许许还有很多多 的不
33、足足,有些模模块做得不不是很好,界界面的设计计及整体的的布局还比比较简单,没没有突 出出特色出来来,这也可可能是我这这个系统的的不足之处处,在这里里也恳请老老师能够对对 我的作作品指明不不足并加以以改正。 我所做的设设计功能并并不算强大大,但是这这些结合了了本学期所所学习的内内容,主要要是界面的的设计,并并改写了两两个类。通通过自己写写代码,我我更进一步步清楚了aandrooid工程程的框架及及设计的步步骤,以及及每个文件件的作用,稍稍微掌握了了一些Viiew类的的方法,同同时也学到到了更多的的界面设计计的方法,比比如如何实实现一个TTextVView里里显示多行行数据,如如何自定义义视图等。
34、但同时我也也遇到了问问题,比如如在编写控控制模块代代码的时候候,如何何何时按键监监听这一块块让我很头头疼,另外外在设计界界面整体布布局的时候候,如何编编写XMLL文件,这这也是很大大的问题后后来通过查查阅资料,对对这些问题题都做到了了很好的解解决总之,在这这一次的课课程设计过过程中,我我查阅了大大量的资料料,对 JJava 有了一 点初步的的认识,对对于软件工工程这些辅辅助性的教教材也巩固固了不少,为为我这次的的课设 提提供了很大大的帮助,锻锻炼了我的的能力让我我掌握了一一门新的程程序设计语语言:jaava 语语言,系统统地学习了了数据库方方面的知识识,并更进进一步提高高了我在程程序设计、调调
35、试 方面面的技巧。更更重要的是是,它还让让我认识到到了自己的的不足,在在编程方面面,我仅仅仅 是刚刚刚入门而已已,以后的的道路任重重道远,需需要我不断断的丰富自自己、充实实自己,这这 样才能能在程序设设计方面有有所收获。五、参考文文献:1 沈沈泽刚,秦秦玉平.JJava 语言程序序设计MM.清华华大学出版版社,20009 2 陈陈昊鹏同同译者作品品 .JJava 编程思想想(第 44 版).机械工业业出版社,220073 耿耿祥义,张张跃平. Javaa 实用教教程(第三三版).清清华大学出出版社,22006六、附录一一 代码清清单TiltVView.javaa/* * Coopyriight
36、 (C) 20077 Thee Anddroidd Opeen Soourcee Proojectt * * Liicenssed uunderr thee Apaache Liceense, Verrsionn 2.00 (thhe LLicennse); * yoou maay noot usse thhis ffile exceept iin coompliiancee witth thhe Liicensse. * Yoou maay obbtainn a ccopy of tthe LLicennse aat * * hhttp:/wwww.appachee.orgg/liccens
37、ees/LIICENSSE-2.0 * * Unnlesss reqquireed byy appplicaable law or aagreeed too in writting, sofftwarre * diistriibuteed unnder the Liceense is ddistrributted oon ann ASS IS BASSIS, * WIITHOUUT WAARRANNTIESS OR CONDDITIOONS OOF ANNY KIIND, eithher eexpreess oor immplieed. * Seee thhe Liicensse foor t
38、hhe sppeciffic llanguuage goveerninng peermisssionns annd * liimitaationns unnder the Liceense. */packaage ccom.eexampple.aandrooid.ssnakee;imporrt anndroiid.coontennt.Coontexxt;imporrt anndroiid.coontennt.rees.TyypedAArrayy;imporrt anndroiid.grraphiics.BBitmaap;imporrt anndroiid.grraphiics.CCanvaas
39、;imporrt anndroiid.grraphiics.PPaintt;imporrt anndroiid.grraphiics.ddrawaable.Drawwablee;imporrt anndroiid.uttil.AAttriibuteeSet;imporrt anndroiid.viiew.VView;/* * TiileViiew: a Viiew-vvariaant ddesiggned for handdlingg arrrays of iconns oor otther * drrawabbles. * */publiic cllass TileeVieww extten
40、dss Vieew /* * Paarameeterss conntrolllingg thee sizze off thee tilles aand ttheirr rannge wwithiin viiew. * Wiidth/Heigght aare iin piixelss, annd Drrawabbles willl be scalled tto fiit too theese * diimenssionss. X/Y Tiile CCountts arre thhe nuumberr of tilees thhat wwill be ddrawnn. */ pproteected
41、d staatic int mTilleSizze; pproteectedd staatic int mXTiileCoount; pproteectedd staatic int mYTiileCoount; pprivaate sstatiic innt mXXOffsset; pprivaate sstatiic innt mYYOffsset; /* * A hashh thaat maaps iintegger hhandlles sspeciifiedd by the subcclassser tto thhe * drrawabble tthat willl be usedd forr thaat reefereence */ pprivaate BBitmaap mTilleArrray; /* * A two-dimeensioonal arraay off inttegerrs inn whiich tthe nnumbeer reepressentss thee * inndex of tthe ttile thatt shoou