Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使自定义覆盖视图在SurfaceView顶部透明?_Android - Fatal编程技术网

Android 如何使自定义覆盖视图在SurfaceView顶部透明?

Android 如何使自定义覆盖视图在SurfaceView顶部透明?,android,Android,好的,我在网上和其他网站上都遇到过很多类似的问题,但都没有用。 我只是想在SurfaceView上覆盖一个透明的视图。。并最终在其上绘制一个矩形,使其看起来覆盖摄影机预览 我无法将自定义视图设置为透明,因为它会阻挡底层的摄影机预览。有什么建议吗 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" androi

好的,我在网上和其他网站上都遇到过很多类似的问题,但都没有用。 我只是想在SurfaceView上覆盖一个透明的视图。。并最终在其上绘制一个矩形,使其看起来覆盖摄影机预览

我无法将自定义视图设置为透明,因为它会阻挡底层的摄影机预览。有什么建议吗

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <FrameLayout 
        android:layout_alignParentTop="true"
        android:layout_width="fill_parent"
        android:layout_height="400dip">
        <SurfaceView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:id="@+id/drawSurface"  />
        <com.bobby.facecapture.FaceOverlayView
            android:id="@+id/drawOverlay"
            android:background="@android:color/transparent" 
            android:layout_width="200dip"     
            android:layout_height="200dip"    
        />
    </FrameLayout>
</RelativeLayout>

200x200只是暂时的,以证明它确实覆盖了另一个视图

FaceOverlayView只是一个自定义视图-直接从视图派生,不覆盖任何内容(目前)


我在相机预览顶部得到一个黑色矩形,这是条形码扫描仪捕获布局,它在相机预览顶部有一个“取景器”。他们使用自己的
@color/transparent
资源,定义为
#00000000
。也许你可以看看他们的代码,试着找出你和他们的不同之处。

你试过将src或background都设置为@null吗

此外,如果这条路径不起作用,你可以考虑使用一个路径绘制到表面上,这将允许你在运行时动态地改变矩形的大小/位置。


然而,这将需要为SurfaceView编写一些代码并处理onDraw,这对于您正在做的事情来说可能是过分的。本质上,这意味着在这里将自定义类作为SurfaceView的扩展,而不是在其上分层。我一直在做完全相同的事情,在相机预览上有一个自定义的视图覆盖。最初视图是不透明的,因此摄影机预览被阻止。问题是,我试图在画布上绘制一幅图像,但将图像指定为RGB_565,将其更改为ARGB_888可以正常工作。您必须具有alpha通道,并确保自定义视图的背景设置为透明。

我将alpha通道设置为0。它就像一个符咒

我在添加自定义视图运行时后执行此操作

(ImageView) myCustomView.setAlpha(0)

我们在我们的一个应用程序中使用了一个非常类似的设置,它似乎工作正常-尝试在自定义视图中覆盖
onDraw
方法,并且在其中完全不做任何事情(不要调用
super
),这会改善问题吗?谢谢你的建议,但不,我仍然只在顶部看到一个黑色视图。我尝试在构造函数和XML声明中将背景色设置为透明。。现在,在派生视图中,除了构造函数和空的onDraw外,什么都没有。这可能看起来有些过分,但可能设置一个透明图片作为背景会起作用?同样的结果-我甚至尝试添加一个顶部带有透明png的普通ImageView-但它仍然会遮住所有内容。嗯,我将尝试空方法-我已尝试重新处理此方法以使用从SurfaceView派生的单个视图-将两者合并为一(使用相同的绘制矩形技术在派生的SurfaceView中覆盖onDraw以绘制覆盖),但是我得到了相同的结果信不信由你。