簡體   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