View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘画的画布,这个画布可以进行任意的扩展。在Android中,任何一个View类都只需要重写onDraw方法来实现界面显示,视图可以显示简单的文本,也可以显示复杂的3D。游戏的核心就是不断的刷新界面和绘制界面,Android提供了invalidate方法来实现界面的刷新,在Android中经常借助Handler实现界面的刷新。废话就不多说了,请下面的例子。

效果图如下:

入口Activity代码如下:

package nyl.viewdemo1; import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message; public class MainActivity extends Activity {private GameView mGameView;public static final int REFRESH = 0;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //显示GameView游戏窗体        mGameView = new GameView(this);        setContentView(mGameView);         //开启线程        new Thread(new GameThread()).start();    }     /**     * 线程的实现有两种方式:     * 第一:实现Runnable接口,重新run()方法;     * 第二:继承Thread类,重写run()方法;     * @author Administrator     */    class GameThread implements Runnable {@Overridepublic void run() {/** * currentThread() 返回当前正在执行的线程的对象的引用 * isInterrupted() 测试线程是否中断 */while (!Thread.currentThread().isInterrupted()) {//发送消息Message message = new Message();message.what = REFRESH;mHandler.sendMessage(message);try {//等待一百毫秒Thread.sleep(100);} catch (InterruptedException e){Thread.currentThread().interrupt();}}}    }    Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {//处理消息switch (msg.what){case REFRESH://刷新游戏窗体mGameView.invalidate();break;}super.handleMessage(msg);}    };} 

游戏界面代码如下:

package nyl.viewdemo1; import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.View; public class GameView extends View {private int miCount = 0;int y = 0;public GameView(Context context) {super(context);} @Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (miCount < 100) {miCount++;} else {miCount = 0;}Paint mPaint = new Paint();switch (miCount % 4){case 0:mPaint.setColor(Color.BLUE);break;case 1:mPaint.setColor(Color.GREEN);break;case 2:mPaint.setColor(Color.RED);break;case 3:mPaint.setColor(Color.WHITE);break;}//绘制矩形canvas.drawRect(200, 100, 400, 300, mPaint);}} 



更多相关文章

  1. android中的UI单线程模型
  2. Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy
  3. Android版本管理解决方法小议
  4. [转]快速切换Android工程版本的方法

随机推荐

  1. Android中解析XML
  2. Android(安卓)中LayoutInflater(布局加载
  3. Android(安卓)DexClassLoader动态加载类
  4. Android(安卓)全景框架了解
  5. Android:AIDL进程之间的通信
  6. Android下java方法和JS方法的互调
  7. Android自定制Toast显示外观
  8. Android的Layout整理
  9. 学习笔记(三)UI开发之一
  10. Android中的内存使用状况统计