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;
}
});