在网上查了好多资料,大部分的回答都是设置这两行代码:
holder.setZOrderOnTop(true);
holder.setFormat(PixelFormat.TRANSPARENT);
但是这样会有一个很麻烦的问题,就是会遮挡布局中的控件,显然这样是会影响用户的,最终我找到一种方法可以完美的解决这个问题,不需要设置上面那两行代码,就是在SurfaceHoleder创建成功后,也就是在如下方法中:
@Override
public void surfaceCreated(SurfaceHolder holder){
//SurfaceHolder在创建值钱 默认是黑色的,所以创建后再去设置画布Canvas的背景色
canvas = mHolder.lockCanvas();
if (canvas == null) return;
canvas.drawColor(Color.WHITE);
mHolder.unlockCanvasAndPost(canvas);
}
去设置Canvas的背景色,然后在你开启线程绘制画面的时候也要设置canvas背景色为白色(当然背景色也不一定是白色,根据自己的需求去设置)
注意:不要设置canvas的mode为Mode.CLEAR,这样SurfaceView背景就又变成默认的黑色了