11

我想为我的相机表面视图设置表面视图的背景颜色。

我正在使用来实现相同的功能。但是这个例子并不完整。谁能帮我提供一些其他有用的链接。

谢谢

4

6 回答 6

28

有一种解决方法可以做到这一点。

  1. 为surfaceview添加一个父viewgroup,将背景颜色设置为这个viewgroup而不是surfaceview;

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_blue_dark">
    
        <com.example.surfacetest.MySurface
            android:id="@+id/surface"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
    </FrameLayout>
    
  2. 为 SurfaceView 实例添加以下内容;

    surfaceView.setZOrderOnTop(true);
    surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
    

现在你得到了你想要的背景颜色,并且表面视图是 tanslucent。

于 2015-01-15T08:46:52.207 回答
6

使用 surfaceview_obj.setBackgroundColor (int color) 设置背景颜色..

将白色设置为背景使用此代码

surfaceview_obj.setBackgroundColor(0Xffffffff);

检查这个

于 2013-03-07T17:15:33.600 回答
3

只需使用 canvas.drawRect() 绘制一个 Rect 对象。将坐标设置为 0,0,screenX,screenY

于 2016-04-24T12:18:36.787 回答
2

您必须做一些修改才能使 SurfaceView 中的任何后台工作,如下所示:

覆盖setBackgroundandsetBackgroundDrawable方法

   Drawable background

   @Override
   public void setBackgroundDrawable(Drawable background) {
      this.background = background;
   }

   @Override
   public void setBackground(Drawable background) {
      this.background = background;
   }

不要忘记调用setBoundsdrawable

   @Override
   protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
      super.onLayout(changed, left, top, right, bottom);
      matrix = null;
      if (background != null)
         background.setBounds(left, top, right, bottom);
   }

然后在你锁定的代码上,绘制,解锁和发布你添加背景的画布

   Canvas c = holder.lockCanvas();
   if (background != null)
      background.draw(c);

   // do your stuff here

   holder.unlockCanvasAndPost(c);

适用于 XML 和 Java 背景。

于 2014-10-20T13:06:59.467 回答
1

用这个

surfaceview.getHolder().setFormat(PixelFormat.TRANSLUCENT);
于 2013-03-07T17:57:40.433 回答
0

只需在绘图之前将 ARGB 值放入绘图方法中(例如矩形、圆形等)。我已将其设置为白色。最后一个参数是透明度。

c.drawARGB(255, 255, 255, 255);

于 2020-09-04T14:15:48.780 回答