Android游戏编程——View游戏框架
来源:互联网 发布:opencv-python在线 编辑:程序博客网 时间:2024/06/07 02:30
android游戏开发中常用的三种视图是:view、SurfaceView和GLSurfaceView。
View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;
SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发;
GLSurfaceView:基于SurfaceView视图再次进行拓展的视图类,专用于3D游戏开发的视图。
在2D游戏开发中,大致可以分为两种游戏框架,View和SurfaceView。
View游戏框架:
Activity:在Activity中首先设置全屏显示,分为两点:隐去状态栏和隐去应用程序的名字(这些代码必须写在显示view之前,否则会报错);随后是设置view。
另一种设置全屏的方法:在Mainfest文件中相应的Activity中写入如下代码:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
代码如下 :
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); */ setContentView(new viewTest(this)); }
view类中的代码:package com.he;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;public class viewTest extends View {float pX=20;float pY=20;public viewTest(Context context) {super(context);// TODO Auto-generated constructor stubsetFocusable(true);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubPaint paint=new Paint();paint.setColor(Color.WHITE);canvas.drawText("MYGAME", pX, pY, paint);super.onDraw(canvas);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode==KeyEvent.KEYCODE_DPAD_UP){pY-=10;invalidate();}else if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN){pY+=10;invalidate();}else if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT){pX-=10;invalidate();}else if(keyCode==KeyEvent.KEYCODE_DPAD_RIGHT){pX+=10;invalidate();}return super.onKeyDown(keyCode, event);}/*@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubfloat x=event.getX();float y=event.getY();//玩家手指点击屏幕的动作if(event.getAction()==MotionEvent.ACTION_DOWN){this.pX=x;this.pY=y;}//玩家手指抬起离开时的动作else if(event.getAction()==MotionEvent.ACTION_MOVE){this.pX=x;this.pY=y;}//玩家手指在屏幕上移动的动作else if(event.getAction()==MotionEvent.ACTION_UP){this.pX=x;this.pY=y;}invalidate();return super.onTouchEvent(event);}*/public boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubfloat x=event.getX();float y=event.getY();this.pX=x;this.pY=y;invalidate();return super.onTouchEvent(event);}}此类中包括:构造方法、onDraw()、按键事件方法和触屏事件方法;
注意的是:
1.在构造方法中要为当前的View设置焦点,其实就是告诉系统,现在的这个视图要和用户交互,让系统来监听 此视图,因为一个界面中可以显示多个View视图, andriod
为了避免出现多个view焦点混乱的问题,View类有了焦点属性,以及对应的设置焦点的方法:
setFocusable(true);true表示当前视图不需要焦点,false表示当前的视图不需要焦点。
2.重新绘制画布的方法,有两个函数,这两个函数都会再次调用onDraw方法invalidate()、postInvalidate();
这两个方法的区别是:invalidate()方法不能在当前线程中循环调用执行,这里说的线程不是系统 的主UI线程,而是指的子线程(自己创建的线程);而postInvalidate()方法可以 在子线程中循环调用执行,如果当前View创建线程循环重绘画布的话,这两种方法就没有什么区别了,都可以使用。
当画布中任何一个元素发生改变后都要调用这个重绘方法。
- Android游戏编程——View游戏框架
- 【读书笔记《Android游戏编程之从零开始》】10.游戏开发基础(View 游戏框架)
- androidのview游戏框架
- 【读书笔记《Android游戏编程之从零开始》】11.游戏开发基础(SurfaceView 游戏框架、View 和 SurfaceView 的区别)
- 4—Android游戏框架
- Android 游戏开发之View框架
- Flash游戏编程框架
- Android游戏开发之构建游戏框架View与SurFaceView的区别(十)
- Android游戏开发之构建游戏框架View与SurFaceView的区别
- Android游戏开发之构建游戏框架View与SurFaceView的区别(五)
- (转)Android游戏开发之构建游戏框架View与SurFaceView的区别(十)
- Android游戏开发之构建游戏框架View与SurFaceView的区别
- Android游戏开发之构建游戏框架View与SurFaceView的区别(十)
- [Java 游戏编程]游戏框架预览
- DirectX 游戏编程之游戏框架
- android-->游戏框架
- Android 游戏框架
- libgdx,android游戏框架
- wxWidgets configuration
- 裸机系列——2440串口通信
- 190页23题--证明类只被加载一次
- 【Android代码片段之六】Toast工具类(实现带图片的Toast消息提示)
- Windows上配置Code::Blocks + wxWidgets
- Android游戏编程——View游戏框架
- 关于ora-1652的一点总结–续(详解rowid,index entry header)
- JVM与进程,线程
- 容器内使用remove时,慎重使用指标
- 2号啦。好久没这么充实了
- java集合复制的另一种方法
- 数据结构—中缀表达式转后缀表达式算法及实现—栈的应用—计算表达式(C++代码实现)(1)
- TMS320C674x--McASP学习笔记
- uva 10202 parsumonious numbers