大部分的人都想著加個背景顏色就行了,結果背景顏色會覆蓋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;
}
});