对Android UI实例全解析

移动开发 Android
Android UI是指用户和某些系统进行交互方法的集合,这些系统不单单指电脑程序,还包括某种特定的机器,设备,复杂的工具等。

下面文章着重讲解界面的Android UI部分,基本的操作大家还是了解的,把整个屏幕看做一个二维数组,每一个元素可以视为一个方块,因此每个方格在游戏进行过程中可以处于不同的状态。

比如空闲,墙,苹果,贪食蛇(蛇身或蛇头)。我们在操作游戏的过程,其实就是不断修改相应方格的状态,然后再让整个View去重绘制自身(当然,还需要加入一些游戏当前所处状态(失败或成功)的判定机制)。

那么在游戏还未正式开始前,首先要做一些初始化工作,在View第一次加载时会首先调用onSizeChanged,这里就是做这些事的最好时机。注意模拟器屏幕默认的像素是320×400,而代码中默认的方格大小为12,因此屏幕上放置的方格数为26×40,把屏幕剖分成这么大后。

再设置一个相应的二维int型数组来记录每一个方格的状态,根据方格的状态,可以从mTileArray保存的图标文件中读取对应的状态图标。第一次调用完onSizeChanged后,会紧跟着第一次来调用onDraw来绘制View自身,当然,此时由于所有方格的状态都是0,所以它在屏幕上等于什么也不会去绘制。#t#

onDraw要做的工作非常简单,就是扫描每一个方格,根据方格当前状态,Android UI从图标文件中选择对应的图标绘制到这个方格上。当然这个onDraw在游戏进行过程中,会不断地被调用,从而界面不断被更新。想象下对整个游戏屏幕拍张照,然后对其下一个状态再拍张照,那么两张照片之间的区别是怎么产生的呢?对于系统来说。

它只知道不断调用onDraw,后者负责对整个屏幕进行绘制,那要产生两个屏幕之间的差异,肯定要通过一些手段对某些数据结构。(比如这里的二维方格地图)进行调整(比如用户的控制指令,定时器等),然后等到下一次onDraw时就会把这些更改在界面上反映出来。

这里要着重说明下private long mMoveDelay = 600;这个成员变量,虽然很不起眼,但仔细考虑它的作用就会发现很有趣,那么改变它的大小到底是如何让我们感觉到游戏变快或变慢呢?

可以打个简单的比方,在时刻Android UI启动,首先把蛇和苹果的位置都在方格地图上作好了标记,然后我们在update函数中修改蛇身让蛇向北前进一步。而这个改变此时还只是停留在内部的核心数据结构上(即二维方格地图),还没有在界面上显示出来。当然,我们马上想到要想让这更改显示出来。

让系统调用onDraw去绘制不就完了吗?可是问题是我们不知道系统是隔多长时间去调用onDraw函数,于是mMoveDelay此时就发挥作用了。通过它就可以设置休眠的时间,等时间一到,马上就会通知SnakeView去重绘制。你可以试试把mMoveDelay数值调大,就会看出我上面提到的“拍照“的效果。

责任编辑:chenqingxiang 来源: 人民邮电出版社
相关推荐

2010-03-03 14:51:02

Android手机

2010-02-06 17:17:17

Android手机

2010-03-04 16:38:37

Android开发技巧

2010-03-03 13:43:46

Android手机系统

2010-02-04 16:03:40

Android传感器

2010-02-07 10:21:27

Android应用程序

2010-03-01 14:28:46

Python进程

2010-02-22 10:18:29

Python代码

2010-04-02 17:45:22

Black Berry

2010-03-01 18:21:08

Python测试

2011-09-14 10:29:23

Android UI设

2009-12-15 14:49:23

VS 2005开发界面

2016-12-02 19:00:13

Android FraAndroid

2010-02-06 10:14:36

Android Act

2011-09-07 14:01:41

Android Wid实例

2013-02-20 15:29:00

JSONAndroid开发

2011-09-07 17:54:40

Android Wid开发

2010-03-02 15:51:05

Android手机

2010-02-06 09:38:42

Android调用服务

2010-03-02 10:46:21

点赞
收藏

51CTO技术栈公众号