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