SurfaceView框架之刷屏方式

      View框架不需手动“刷屏”,是因为View类本身提供两种重绘函数,其内部已封装了对画布的刷屏操作。但SurfaceView是自定义的绘图函数,而且每次获取到的Canvas仍然是上次使用过的画布。系统没有刷新画布,也没有重新提供一个画布,因此如果不刷新的话,必会遗留下以前画布的状态。所以,用SurfaceView视图,在得到其画布Canvas之后,应先进行刷屏操作,将画布上的内容全部清空,然后再进行绘图。

      刷屏的方式有以下几种:

      1.覆盖法,即是每次绘图之前,绘制一个等同于屏幕大小的图形覆盖在画布上。

public void myDraw(){

  Canvas canvas = holder.lockCanvas();

  //绘制矩形

  canvas.drawRect(0,0,this.getWidth(),this.getHeight(),paint);

  canvas.drawText("Game",textX,textY,paint);

  holder.unlockCanvasAndPost(canvas);

}

      每次在画布上绘制前都会绘制一个填充的,大小等同于屏幕的矩形覆盖画布,只要这个矩形的颜色等同于拼命默认的颜色,那就等同于将屏幕做了清屏操作。

      2.颜色重绘法,有以下两种情况。

     (1)每次绘图之前,在画布上填充一种颜色。

       canvas.drawColor(Color.Black);

       Canvas类的drawColor(int color)函数是往整个画布中填充一种颜色。

     (2)指定RGB,每次绘图之前,指定RGB来填充画布。

       canvas.drawRGB(0,0,0);

      3.图片覆盖法,每次绘图之前,绘制一张等同于屏幕大小的图片覆盖在画布上。

在画布上绘制图形之前,首先绘制游戏的背景图,并且这张背景图一定要等同于屏幕的大小。