首先我在surfaceCreated方法里面画背景图。
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
// (new Thread(this)).start() ;
my.start();
Canvas c = holder.lockCanvas();
Paint p = new Paint();
c.drawBitmap(BackgroundImage, 0, 0, p);
holder.unlockCanvasAndPost(c);
Log.v("surfaceCreated", "surfaceCreated");
}
然后我开启线程绘制图形的时候会出现背景图一直闪烁的问题。
如果我每次都在线程里面重新绘制背景,这样我就得记录下原先绘制过的图像坐标,然后再重新都画出来,这样会越画越慢。
刚刚接触几天SurfaceView,大家帮帮忙呀 分析下
------解决方案--------------------
重绘的时候的问题,不要直接用invalidate,这样必然闪烁,需要重绘的时候重新调用一次c.drawBitmap(BackgroundImage, 0, 0, p);
应该就可以了
------解决方案--------------------
SurfaceView本身带了双缓冲了,你的draw()函数哪去了,
自写一个draw函数,callback得到canvas想在哪画就在哪画
刷新用新线程也行,调用draw()就行了