在我的应用程序中,我有一个半透明Activity设置android:windowIsTranslucent为true. Activity包含FrameLayout我以编程方式添加SurfaceView的 .
默认情况下SurfaceView,根据Activity背景绘制位图,Theme在我的情况下Translucent,SurfaceView显示透明位图。
为了设置背景,我使用SurfaceHolder callbacks了以下方式:
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = holder.lockCanvas();
if (canvas != null) {
canvas.drawRGB(255, 255, 255);
holder.unlockCanvasAndPost(canvas);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Canvas canvas = holder.lockCanvas();
if (canvas != null) {
canvas.drawRGB(255, 255, 255);
holder.unlockCanvasAndPost(canvas);
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
在surfaceCreated()/surfaceChanged()我画一种颜色。
当FrameLayout容器SurfaceView被调整大小时,surfaceDestroyed()回调调用和默认透明背景显示给用户,直到surfaceCreated()再次调用。
所以用户会暂时看到透明背景。
我的问题是:
- 是否
SurfaceView使用Activity窗口颜色绘制默认位图? - 我们可以更改用于绘制默认位图的
color那个吗?SurfaceView