1. 自定义一个类“MySurfaceView”,继承SurfaceView,还要实现了Callback接口:
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
* SurfaceHolder类作用:
提供控制SurfaceView大小,格式等,主要用于监听SurfaceView状态。
*SurfaceView 作用:保存当前视图的像素数据,使用中不会直接与其打交道,是通过SurfaceHolder控制的。
注意:以下定义的gameDraw() 中,使用了SurfaceHolder的 lockCanvas() 获得了SurfaceView的Canvas对象。
Canvas canvas=sfh.lockCanvas(); 通过canvas来修改SurfaceView中数据。
public class MySurfaceView extends SurfaceView implements Callback{
private SurfaceHolder sfh;
public MySurfaceView(Context context) {
super(context);
sfh=this.getHolder();
sfh.addCallback(this);
paint=new Paint();
paint.setColor(Color.RED);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
gameDraw();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
// 自定义的绘图函数
private void gameDraw() {// TODO Auto-generated method stub
Canvas canvas=sfh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawText("xiabing", textX, textY, paint);
sfh.unlockCanvasAndPost(canvas);
}
}
对SurfacevView监听需要使用到SurfaceHolder的Callback接口。重写三个函数,监听Surfaceview不同状态。
1. 当SurfacevView被创建完成时响应函数:surfaceCreated()
2. 当SurfacevView状态发生改变时响应函数:surfaceChanged()
3. 当SurfaceView状态被摧毁时响应的函数:surfaceDestroyed()
对SurfaceView监听采用:SurfaceHolder的 addCallback() 监听接口。
代码下载:http://download.youkuaiyun.com/detail/xiabing082/5965761