在我的应用程序中,我有一个半透明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()
再次调用。 < / p>
因此,用户暂时会看到透明背景。
我的问题是:
SurfaceView
是否使用Activity
窗口颜色绘制默认位图?color
用于绘制默认位图的SurfaceView
吗?