3

在我的应用程序中,我有一个半透明Activity设置android:windowIsTranslucenttrue. Activity包含FrameLayout我以编程方式添加SurfaceView的 .

默认情况下SurfaceView,根据Activity背景绘制位图,Theme在我的情况下TranslucentSurfaceView显示透明位图。

为了设置背景,我使用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()再次调用。

所以用户会暂时看到透明背景。

我的问题是:

  1. 是否SurfaceView使用Activity窗口颜色绘制默认位图?
  2. 我们可以更改用于绘制默认位图的color那个吗?SurfaceView
4

0 回答 0