繁体   English   中英

如何在SurfaceView顶部使自定义叠加视图透明?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM