SurfaceView的背景设置相关问题

作者: 青檬可乐 | 来源:发表于2017-07-28 11:09 被阅读1597次

最近公司产品要加一个视频的功能,所以撸的surfaceView方面的代码比较多。
昨天遇到一个问题,我把视频所在的Activity的背景设置为透明,那么surfaceView视图的背景也变成透明了。但是需求中需要背景为黑色,以实现那些信息提示的显示。

实行的方法:

1.将surfaceview的父容器的背景设置为黑色。

结果: 没用,还是透明的,查阅资料得知,surfaceView会在当前的activity布局上挖一个洞,这个洞是一直到你父布局的底层的,所以说不管你在surfaceview上设置几个父容器,最后surfaceview那块的背景都跟activity的背景一样。

2.给surfaceview设置背景,并添加 surfacview.setZOrderOnTop(true);这个属性。

结果:成功,surfaceview绘制的内容在Z轴上放在顶层而且surfaceview也成功加上了黑色的背景,但是引出了另外一个问题,在surfaceview所在视图区域的其他控件全部被他的画布给遮住了。所以这个方案也没有能解决掉问题。

3.在surfaceView第一次生成的时候,用canvas给surfaceView手动绘制一层背景

结果:成功了,但是这种方法要注意的是只能在第一次生成surfaceview的时候去绘制,不然多次绘制,那么就会覆盖掉你原本要在surfaceview上绘制的内容了(我的项目中,surfaceview 得多次重复使用)

下面是我最后使用的代码:

surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                if (needPaint) {
                    needPaint = false;
                    Canvas canvas = holder.lockCanvas();
                    canvas.drawColor(Color.BLACK);
                    holder.unlockCanvasAndPost(canvas);
                }
 }

            @Oerride
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { }
            @Override
            public void surfaceDestroyed(SurfaceHolder holder) { }
        });

有问题欢迎交流,欢迎指正。

相关文章

  • SurfaceView的背景设置相关问题

    最近公司产品要加一个视频的功能,所以撸的surfaceView方面的代码比较多。昨天遇到一个问题,我把视频所在的A...

  • 项目难点

    1.surfaceView问题 1.surfaceView 双缓冲机制,导致背景闪烁 (清空canva...

  • SurfaceView背景侵入问题

    大部分的人都想着加个背景颜色就行了,结果背景颜色会覆盖SurfaceView导致无法正常显示。 此时有人想出了解决...

  • 为SurfaceView设置效果(圆角、渐变蒙层)

    设置SurfaceView圆角 为SurfaceView设置渐变蒙层,设置foreground属性 test_gr...

  • Android SurfaceView 多层级叠加冲突

    问题 直播教室上台功能,多个SurfaceView层叠展示,调节层级位置,会有重叠的问题 解决 需要设置如下属性:...

  • CSS基础-背景和精灵图

    背景相关属性 背景颜色 如何设置标签的背景颜色? 在CSS中可以通过background-color:属性设置标签...

  • 背景和精灵图

    背景相关属性 背景颜色 。如何设置标签的背景颜色?。在css中可以通过background-color:属性设置标...

  • 13-CSS基础-背景和精灵图

    背景相关属性 背景颜色 如何设置标签的背景颜色? 在CSS中可以通过background-color:属性设置标签...

  • CSS基础--背景和精灵图

    背景相关属性 背景颜色 如何设置标签的背景颜色?在CSS中可以通过background-color:属性设置标签的...

  • textureView的两种使用场景

    TextureView相关的SurfaceView SurfaceView的工作方式是创建一个置于应用窗口之后的新...

网友评论

    本文标题:SurfaceView的背景设置相关问题

    本文链接:https://www.haomeiwen.com/subject/doyxlxtx.html