游戏框架View以及简单的运用

View类常需要实现的抽象函数

    

public class MyView extends View {
    public MyView(Context context) {
        super(context);
    }
    
    /**
     * 该方法在该View实例化的时候自动就调用了
     */
    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }
    
    /**
     * 按键按下的事件
     */
    @Override
    public boolean onKeyDown(int KeyCode,KeyEvent event) {
        return true;
    }
    /**
     * 按键按上的事件
     */
    @Override
    public boolean onKeyUp(int KeyCode,KeyEvent event) {
        return true;
    }
    
    /**
     * 触摸事件
     */
    @Override
    public boolean onTouchEvent(MotionEvent event){
        return true;
    }
}

下面 用上面提到的方法进行绘制图片并让它动起来

public class MyView extends View {
    Paint paint;
    float x, y; // x,y坐标
    float srceenW,srceenH; //手机屏幕的宽高
    public MyView(Context context,float srceenW,float srceenH) {
        super(context);
        paint = new Paint(); 
        paint.setStyle(Style.STROKE); //设置画笔的样式
        paint.setAntiAlias(true); 
        this.srceenH=srceenH;
        this.srceenW=srceenW;
    }

    /**
     * 该方法在该View实例化的时候自动就调用了 默认只执行一次
     */
    @Override
    public void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE); //设置背景
        paint.setColor(Color.BLACK); //画笔的颜色
        canvas.drawText("Play Game", x, y, paint); //绘制 字幕
        super.onDraw(canvas);
    }

    /**
     * 按键按下的事件
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return super.onKeyDown(keyCode, event);
    }

    /**
     * 按键按上的事件
     */
    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        return super.onKeyUp(keyCode, event);
    }

    /**
     * 触摸事件
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {//将画的图移动到手触摸的位置
        x= event.getX();  //重新设置字幕的绘制位置
        y= event.getY();
        invalidate(); //重绘  再次调用onDraw方法
        return super.onTouchEvent(event);
    }
}

最后在Activity里面调用

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置手机全盘
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //获取手机屏幕宽高
        Display display=getWindowManager().getDefaultDisplay();
        setContentView(new MyView(this, display.getWidth(), display.getHeight()));
    }

这样我们调用手机屏幕的位置,“Play Game”字就会在什么位置显示

 

 

posted @ 2013-03-30 18:28  消逝的落叶  阅读(483)  评论(0编辑  收藏  举报