博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 游戏开发 View框架
阅读量:6197 次
发布时间:2019-06-21

本文共 3481 字,大约阅读时间需要 11 分钟。

按键盘的上下键矩形就会上下移动;

通过实例化Handler对象并重写handkeMessage方法实现了一个消息接收器。然后再线程中通过sendMessage方法发送更新界面的消息,接收器收到更新界面的消息时便执行invalidate方法更新屏幕显示。

 

package com.yarin.android.TestOnView;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{    int  miCount = 0;    int  y = 0;    public GameView(Context context)    {        super(context);    }         public void onDraw(Canvas 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.YELLOW);                 break;        default:            mPaint.setColor(Color.WHITE);                 break;        }        //绘制矩形        canvas.drawRect((320-80)/2, y, (320-80)/2+80, y+40, mPaint);    }}

上面是用来绘制界面的,我们还需要一个类来控制应用的操作

 

package com.yarin.android.TestOnView;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.KeyEvent;import android.view.MotionEvent;public class ControlView extends Activity{    private static final int    REFRESH        = 0x000001;          private GameView            mGameView    = null;       @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);               this.mGameView = new GameView(this);        // 设置显示为我们自定义的View(GameView)        setContentView(mGameView);        // 开启线程        new Thread(new GameThread()).start();    }    Handler    myHandler    = new Handler()    {        //接收到消息后处理        public void handleMessage(Message msg)        {            switch (msg.what)            {            case ControlView.REFRESH:                mGameView.invalidate();                break;            }            super.handleMessage(msg);        }               };    class GameThread implements Runnable    {        public void run()        {            while (!Thread.currentThread().isInterrupted())            {                Message message = new Message();                message.what = ControlView.REFRESH;                //发送消息                Activity01.this.myHandler.sendMessage(message);                try                {                    Thread.sleep(100);                }                catch (InterruptedException e)                {                    Thread.currentThread().interrupt();                }            }        }    }       //当然这些事件也可以写在GameView中    //触笔事件    public boolean onTouchEvent(MotionEvent event)    {        return true;    }       //按键按下事件    public boolean onKeyDown(int keyCode, KeyEvent event)    {        return true;    }       //按键弹起事件    public boolean onKeyUp(int keyCode, KeyEvent event)    {        switch (keyCode)        {        //上方向键        case KeyEvent.KEYCODE_DPAD_UP:            mGameView.y-=3;            break;        //下方向键        case KeyEvent.KEYCODE_DPAD_DOWN:            mGameView.y+=3;            break;        }        return false;    }       public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)    {        return true;    }}

转载地址:http://nqjca.baihongyu.com/

你可能感兴趣的文章
Java B2B2C o2o多用户商城 springcloud架构-hystrix参数详解(八)
查看>>
Linux 任务相关命令介绍
查看>>
人工智能管家离我们已不远
查看>>
IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie常用方法
查看>>
wordpress 主题不能切换
查看>>
dia 0.97.2 无法输入中文解决
查看>>
android SDK 源码 -----建造这模式(生成器模式)
查看>>
OSChina 周六乱弹——今天你自拍了吗?
查看>>
OSChina 周一乱弹 ——月薪三万长的帅的为啥找不到女朋友
查看>>
java并发库之Executors常用的创建ExecutorService的几个方法说明
查看>>
Sonar Runner2.4 安装配置
查看>>
深入理解Ehcache系列(五)
查看>>
java5线程并发库的应用
查看>>
020# Adempiere的会计功能模组(一)
查看>>
舌尖上的程序猿
查看>>
Highcharts参数大全
查看>>
函数式编程
查看>>
datav.js
查看>>
java之不可变对象--java并发编程实践
查看>>
php编译完成后安装mysql扩展
查看>>