[英]How to Make a Custom Overlay View Transparent on top of a SurfaceView?
好的,我已经在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派生,而不会覆盖任何东西(现在)。
我在相机预览的顶部有一个黑色矩形
好吧, 这个资源文件是条码扫描器捕获布局,它在摄像头预览的顶部有一个“取景器”。 他们使用自己的@color/transparent
资源,定义为<color name="transparent">#00000000</color>
。 也许用他们的代码来解决,并试图弄清楚你和他们的不同之处。
我一直在做同样的事情,在相机预览上有自定义视图叠加。 最初视图是不透明的,因此相机预览被阻止。 问题是我试图将图像绘制到画布但指定图像为RGB_565,将其更改为ARGB_8888工作正常。 您必须具有Alpha通道,并确保将自定义视图的背景设置为透明。
我将alpha通道设置为0.它就像一个魅力。
我添加自定义视图运行时后执行此操作。
(ImageView) myCustomView.setAlpha(0)
您是否尝试将src或背景设置为@null?
此外,如果此途径不起作用,您可以考虑使用路径绘制到曲面上,这将允许您在运行时动态更改矩形的大小/位置。
但是,这需要为SurfaceView编写一些代码并处理onDraw,这可能对你正在做的事情有些过分。 从本质上讲,这意味着在这里使您的自定义类成为SurfaceView的扩展,而不是在一个上面分层的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.