我在SurfaceView中想给画布设置背景颜色,使用了setBackgroundColor这个方法把背景设置为白色,结果我绘制在画布上的图案全部被遮挡,能有什么办法解决吗?

解决方案 »

  1.   

    你可以设置图片输出
    public void setBackgroundResource (int resid) Set the background to a given resource. The resource should refer to a Drawable object.
    Related XML Attributes
    android:background
    Parametersresid The identifier of the resource. 取出图片资源
    surfaceview.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.bg)); 
      

  2.   

    楼主可以绘制一个全屏的填充矩形,颜色为白色,就相当于背景了。
                // 首先定义一个paint    
                Paint paint = new Paint();    
      
                // 绘制矩形区域-实心矩形    
                // 设置颜色    
                paint.setColor(Color.BLUE);    
                // 设置样式-填充    
                paint.setStyle(Style.FILL);    
                // 绘制一个矩形    
                canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);  
      

  3.   

    2L的可行,不过每次ondraw的时候都要画这个白色的背景,然后再去绘制其他的图片或图形
      

  4.   

    呵呵 白色的图片是bitmap吧,如果你的程序资源占用很多的话,注意bitmap的内存泄露啊
      

  5.   

    楼主可以在绘制背景图的前后加上log,在LogCat里面看看前后的时间差,看看相差多少毫秒。
    同样在用白色填充矩形的前后如法炮制,比较一下两次的用时。
      

  6.   


    明白了。不过我现在用的是您的方法,因为我在SurfaceView中已经创建有一个Rect对象作为绘图区域,没必要再载入一张10来K的图片作为背景,浪费内存。谢谢各位的回答。
      

  7.   

    用Canvas的drawRGB (int r, int g, int b)和drawARGB (int a, int r, int g, int b)也可以填充充满整个画布的的背景颜色,后面的函数第一个参数表示透明度。
    这样就不用专门画个矩形了。