在我的应用程序中,我有一个半透明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