设置表面视图的背景颜色
使用surfaceview_obj.setBackgroundColor(INT颜色)来设置背景颜色..
设置白色作为背景使用此代码
surfaceview_obj.setBackgroundColor(0Xffffffff);
使用此
surfaceview.getHolder().setFormat(PixelFormat.TRANSLUCENT);
我已经尝试了上述,但它并没有帮助我 – 2013-03-08 04:18:53
你必须做一个小黑客,各地要在SurfaceView任何背景的工作,如:
覆盖的setBackground
和setBackgroundDrawable
方法
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背景。
有一种解决方法可以做到这一点。
-
为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>
-
为SurfaceView实例添加以下内容;
surfaceView.setZOrderOnTop(true); surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
现在你得到你想要的背景颜色和surfaceview是tanslucent。
这应该被标记为正确的答案。它像一个魅力。 – andreimarinescu 2016-01-05 08:04:53
@wrkwrk:这可以工作,但是这样做我不能覆盖SurfaceView的任何视图顶部。除了setXOrderOnTop(true)之外,我们还有其他选择吗? – 2016-05-13 09:01:36
完美!你从轻微的头痛中拯救了我! – 2017-03-21 19:13:53
Hi @Swarnedu。你的答案是正确的,但它会使表面视图不透明,我只是想设置一个透明的背景颜色 – 2013-03-07 17:18:37
我不确定,只是试一试这个颜色代码0X00ffffff – 2013-03-07 17:22:13
我已经检查过。它总是使不透明的表面视图 – 2013-03-07 17:26:16