好的,我在SO和网络上经历了很多类似的问题,但无济于事。 我只是试图在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只是一个自定义视图 - 直接从View派生,而不会覆盖任何内容(暂时)。
我在相机预览的顶部有一个黑色矩形
答案 0 :(得分:2)
嗯,this resource file是条码扫描器捕获布局,它在摄像头预览的顶部有一个“取景器”。他们使用自己的@color/transparent
资源,定义为<color name="transparent">#00000000</color>
。也许用他们的代码来解决,并试图弄清楚你和他们的不同之处。
答案 1 :(得分:0)
您是否尝试将src或背景设置为@null?
此外,如果此途径无效,您可以考虑使用路径绘制到曲面上,这样您就可以在运行时动态更改矩形的大小/位置。
但是,这需要为SurfaceView编写一些代码并处理onDraw,这可能对你正在做的事情有些过分。从本质上讲,这意味着让你的自定义类在这里成为SurfaceView的扩展,而不是在一个上层叠的东西。
答案 2 :(得分:0)
我一直在做同样的事情,在相机预览上有自定义视图叠加。最初视图是不透明的,因此相机预览被阻止。问题是我试图将图像绘制到画布但指定图像为RGB_565,将其更改为ARGB_8888工作正常。您必须拥有Alpha通道,并确保自定义视图的背景设置为透明。
答案 3 :(得分:0)
我将alpha通道设置为0.它就像一个魅力。
我在添加自定义视图运行时后执行此操作。
(ImageView) myCustomView.setAlpha(0)