surfaceview:可以使用一个线程来绘图,程序不会因为绘图而失去响应
1.自定义一个surfaceview:
class
MySurfaceView extends
SurfaceView implements
SurfaceHolder.Callback
2.实现SurfaceHolder.Callback接口的3个回调方法,在surfaceCreated中启动绘制线程:
@Override
public
void
surfaceChanged(SurfaceHolder holder, int
format, int
width,
int
height) {
//
TODO Auto-generated method stub
}
@Override
public
void
surfaceCreated(SurfaceHolder holder) {
//
启动自定义线程
new
Thread(new
MyThread()).start();
}
@Override
public
void
surfaceDestroyed(SurfaceHolder holder) {
//
TODO Auto-generated method stub
}
3.注册callback:
public
MySurfaceView(Context context) {
super(context);
BackgroundImage =
BitmapFactory.decodeResource(getResources(),
R.drawable.bg);
QuestionImage =
BitmapFactory.decodeResource(getResources(),
R.drawable.question);
Holder =
this.getHolder();//
获取holder
Holder.addCallback(this);
}
4.在绘制线程中绘画:
canvas
=
Holder.lockCanvas();//
获取画布
.
.
.
.//绘画,如canvas.drawBitmap等
Holder.unlockCanvasAndPost(canvas);//
解锁画布,提交画好的图像