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
SurfaceView
usesActivity
window color to draw default bitmap? - Can we change the
color
thatSurfaceView
uses to draw default bitmap?