我想为我的相机表面视图设置表面视图的背景颜色。
我正在使用它来实现相同的功能。但是这个例子并不完整。谁能帮我提供一些其他有用的链接。
谢谢
有一种解决方法可以做到这一点。
为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>
为 SurfaceView 实例添加以下内容;
surfaceView.setZOrderOnTop(true);
surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
现在你得到了你想要的背景颜色,并且表面视图是 tanslucent。
使用 surfaceview_obj.setBackgroundColor (int color) 设置背景颜色..
将白色设置为背景使用此代码
surfaceview_obj.setBackgroundColor(0Xffffffff);
只需使用 canvas.drawRect() 绘制一个 Rect 对象。将坐标设置为 0,0,screenX,screenY
您必须做一些修改才能使 SurfaceView 中的任何后台工作,如下所示:
覆盖setBackground
andsetBackgroundDrawable
方法
Drawable background
@Override
public void setBackgroundDrawable(Drawable background) {
this.background = background;
}
@Override
public void setBackground(Drawable background) {
this.background = background;
}
不要忘记调用setBounds
drawable
@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.getHolder().setFormat(PixelFormat.TRANSLUCENT);
只需在绘图之前将 ARGB 值放入绘图方法中(例如矩形、圆形等)。我已将其设置为白色。最后一个参数是透明度。
c.drawARGB(255, 255, 255, 255);