设置表面视图的背景颜色

时间:2013-03-07 16:57:04

标签: android surfaceview

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

我正在使用this来实现相同的功能。但这个例子并不完整。任何人都可以帮助我一些其他有用的链接。

由于

6 个答案:

答案 0 :(得分:21)

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

  1. 为surfaceview添加父视图组,将背景颜色设置为此视图组而不是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);
    
  3. 现在你得到你想要的背景颜色,而surfaceview是tanslucent。

答案 1 :(得分:4)

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

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

surfaceview_obj.setBackgroundColor(0Xffffffff);

check this

答案 2 :(得分:2)

你需要做一些小问题才能在SurfaceView中使用任何后台工作,如下所示:

覆盖setBackgroundsetBackgroundDrawable方法

   Drawable background

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

   @Override
   public void setBackground(Drawable background) {
      this.background = background;
   }
不要忘记在可绘制的

上拨打setBounds
   @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背景。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

使用此

surfaceview.getHolder().setFormat(PixelFormat.TRANSLUCENT);

答案 5 :(得分:0)

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

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