In my application I have a Translucent Activity with android:windowIsTranslucent is set to true. Activity contains a FrameLayout to which I programmatically add SurfaceView.
By default SurfaceView is drawing bitmap, as per the Activity background Theme, which in my case in Translucent, so SurfaceView is showing transparent bitmap.
For setting background I used SurfaceHolder callbacks in following way:
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) {
}
});
In surfaceCreated()/surfaceChanged() I am drawing a color.
When the FrameLayout containing SurfaceView gets resized then surfaceDestroyed() callbacks invokes and default Transparent background shows to user until surfaceCreated() invokes again.
So user sees Transparent background for a moment.
My questions is:
- Is
SurfaceViewusesActivitywindow color to draw default bitmap? - Can we change the
colorthatSurfaceViewuses to draw default bitmap?