通过Android SDK中的Sample文件夹中的Snake示例这个简单的贪食蛇游戏让我们好好了解一下Android平台窗口View显示类开发中的相关问题。 1. 我们直接在Eclipse中导入这个工程,可以看到在Snake.java的入口onCreate方法中第一句requestWindowFeature(Window.FEATURE_NO_TITLE);通过这句窗口特性请求,我们使用Window.FEATURE_NO_TITLE就可以轻松的让窗口做到了无标题显示。 2.setContentView(R.layout.snake_layout);设置窗口的布局文件,这里Android123给大家说明的是,这里的snake_layout使用了自定义资源标签的方式,大家注意学习:这里我们可以看到来自SnakeView这个派生类的名称,由于Android内部的R.资源不包含SnakeView类,所以我们必须写清楚Package,比如com.exmple.android.snake.SnakeView 然后和其他控件使用一样,都是一个id然后宽度、高度、以及自定义的标签tileSize(尾巴长度),如下: <com.example.android.snake.SnakeView android:id="@+id/snake" android:layout_width="fill_parent" android:layout_height="fill_parent" tileSize="12" /> 3.这里Snake作为主游戏窗口,包含了重载的暂停Activity,通过Avtivites类的生命周期我们可以了解到,当窗口切换到后台时会自动调用这个重写的方法,类似C++的纯虚函数,如下: @Override protected void onPause() { super.onPause();} 4.同时在游戏退出时重写了onSaveInstanceState方法来保存窗口实例,就是游戏的进度。 @Override public void onSaveInstanceState(Bundle outState) {} 这里我们就简单说明下简单游戏的框架设计,明天我们继续讲解下TileView和SnakeView的设计,这个例子相信大家都能看懂,不过Android很多新的绘图方法希望大家了解,Android平台的View设计,如果有什么疑问可以发送到android123@163.com或访问bbs.android123.com,我们会作回复。
贪食蛇代码
Android示例程序Snake贪食蛇代码分析(二) Android开发技术
上一次我们大概讲解了下Android SDK中的演示程序Snake游戏的主框架,今天我看来看下实现的基础类TileView,从名称上不难看出这是一个方砖类,就是生成一个方块。TileView使用了Android平台的显示基类View,View类是直接从java.lang.Object派生出来的,是各种控件比如TextView、EditView的基类,当然包括我们的窗口Activity类,这些在SDK文档中都说的比较清楚。 这里定义了5个int型全局的变量,分别是方砖的数量mTileSize;方砖水平x防线的数量mXTileCount;以及竖直y方向上的方砖数量mYTileCount,下面是一个相对偏移位置mXOffset和mYOffset;这里android123主让要大家了解如何自定义View在Android开发中,在一个View类中主要是重写onSizeChanged方法来控制改变部分,以及onDraw实现画布的修改,实现的简写如下: @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) {} @Override public void onDraw(Canvas canvas) { super.onDraw(canvas);} 我们自定义的TileView类需要自己添加一个构造方法,根据需要,我们还重载了一种包含样式的方法,这里大家可以多看下Gallery控件的实现,就好理解了,下面是基本框架。public TileView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);} public TileView(Context context, AttributeSet attrs) { super(context, attrs);} 在贪食蛇游戏中我们知道Snake是移动的,所以加入了一个清除显示的clearTiles方法,通过一个二维数组保存一个gird网格型的运动轨迹,下一次我们将会讲解android贪食蛇的游戏逻辑和完整的关联拼接实现。如果有疑问可以在bbs.android123.com讨论。

