@Override
public void surfaceCreated(SurfaceHolder holder)
{
// 锁定整个SurfaceView
Canvas canvas = holder.lockCanvas();
// 绘制背景
Bitmap back = BitmapFactory.decodeResource(
SurfaceViewTest.this.getResources(), R.drawable.sun);
//绘制背景
canvas.drawBitmap(back, 0, 0, null);
// 绘制完成,释放画布,提交修改
holder.unlockCanvasAndPost(canvas);
//重新锁一次,"持久化"上次所绘制的内容
holder.lockCanvas(new Rect(0, 0, 0, 0));
holder.unlockCanvasAndPost(canvas);
}希望这段代码对你有过帮助

解决方案 »

  1.   


    不对,我弄错了,还是不行看,我用view就行。
      

  2.   


    哈哈,终于可以了,我在每次画线(不仅在surfaceCreate的时候)结束后在加上
      //重新锁一次,"持久化"上次所绘制的内容
                    holder.lockCanvas(new Rect(0, 0, 0, 0));
                    holder.unlockCanvasAndPost(canvas);
    就可以了。
      

  3.   

    我的SurfaceView用法:
    public class HelloSurfaceView extends SurfaceView implements
    SurfaceHolder.Callback {
        private SurfaceHolder helloSurfaceHolder = null;
        public HelloSurfaceView(Context context) {
    super(context);
    // 实例化SurfaceHolder
    helloSurfaceHolder = this.getHolder();
    // 添加回调
    helloSurfaceHolder.addCallback(this);
        }
        private void draw() {
    synchronized (helloSurfaceHolder) {
    Canvas canvas = null;
    if (null != (canvas = helloSurfaceHolder.lockCanvas())) {
    canvas.drawBitmap(bitmap, rectData,
    rectDisp, null);
    clickSurfaceHolder.unlockCanvasAndPost(canvas);
    }
    }
        }