答案 0 :(得分:21)
有一种解决方法可以做到这一点。
为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。
答案 1 :(得分:4)
使用surfaceview_obj.setBackgroundColor(int color)设置背景颜色..
将白色设置为背景使用此代码
surfaceview_obj.setBackgroundColor(0Xffffffff);
答案 2 :(得分:2)
你需要做一些小问题才能在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背景。
答案 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);