SurfaceView背景侵入问题

2017-10-30  本文已影响487人  你需要一台永动机

大部分的人都想着加个背景颜色就行了,结果背景颜色会覆盖SurfaceView导致无法正常显示。

此时有人想出了解决方案

sfv.setZOrderOnTop(true);      // 这句不能少  
sfv.getHolder().setFormat(PixelFormat.TRANSPARENT);

虽然这个可以勉强实现功能,但是又导致其他问题。此时SurfaceView位于视图最顶部,把布局中的以前顶层view都覆盖掉了。

一下网上最好的解决方案

//surface回调  
surfaceHolder.addCallback(new SurfaceHolder.Callback() {  
    @Override  
    public void surfaceCreated(SurfaceHolder holder) {  
                Canvas canvas = surfaceHolder.lockCanvas();  
        canvas.drawColor(Color.WHITE);  //随便设置背景颜色
        surfaceHolder.unlockCanvasAndPost(canvas);  
    }  
    @Override  
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {  
  
    }  
  
    @Override  
    public void surfaceDestroyed(SurfaceHolder holder) {  
             timerTask.cancel();  
         timerTask = null;  
    }  
        }); 
上一篇下一篇

猜你喜欢

热点阅读