WEB开发网
开发学院手机开发Android 开发 Android 开发中的游戏开发使用 View 还是 Surface... 阅读

Android 开发中的游戏开发使用 View 还是 SurfaceView

 2010-02-27 07:25:00 来源:WEB开发网   
核心提示:int height) {}@Overridepublic void surfaceCreated(SurfaceHolder holder) {new Thread(new MyThread()).start();}@Overridepublic void surfaceDestroyed(SurfaceHolder

int height) {

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

new Thread(new MyThread()).start();

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

}

//内部类的内部类

class MyThread implements Runnable{

@Override

public void run() {

Canvas canvas = holder.lockCanvas(null);//获取画布

Paint mPaint = new Paint();

mPaint.setColor(Color.BLUE);

canvas.drawRect(new RectF(40,60,80,80), mPaint);

holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像

}

}

}

}

访问SurfaceView的底层图形是通过SurfaceHolder接口来实现的,通过getHolder()方法可以得到这个 SurfaceHolder对象。你应该实现surfaceCreated(SurfaceHolder)和 surfaceDestroyed(SurfaceHolder)方法来知道在这个Surface在窗口的显示和隐藏过程中是什么时候创建和销毁的。

SurfaceView可以在多线程中被访问。

注 意:一个SurfaceView只在SurfaceHolder.Callback.surfaceCreated() 和 SurfaceHolder.Callback.surfaceDestroyed()调用之间是可用的,其他时间是得不到它的Canvas对象的(null)。

我的访问过程:

创建一个SurfaceView的子类,实现SurfaceHolder.Callback接口。

得到这个SurfaceView的SurfaceHolder对象holder。

holder.addCallback(callback),也就是实现SurfaceHolder.Callback接口的类对象。

在SurfaceHolder.Callback.surfaceCreated()调用过后holder.lockCanvas()对象就可以得到SurfaceView对象对应的Canvas对象canvas了。

用canvas对象画图。

画图结束后调用holder.unlockCanvasAndPost()就把图画在窗口中了。

SurfaceView可以多线程访问,在多线程中画图。

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.util.Log;

上一页  1 2 3 4  下一页

Tags:Android 开发 游戏

编辑录入:coldstar [复制链接] [打 印]
赞助商链接