您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页解决SurfaceView显示黑屏的问题

解决SurfaceView显示黑屏的问题

来源:二三四教育网

在网上查了好多资料,大部分的回答都是设置这两行代码:

  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背景就又变成默认的黑色了

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务