2011-10-10 21 views
5

[OK]私はこことWeb上で多くの同様の質問をしましたが、無駄です。 私は、SurfaceViewの上に透明なビューをオーバーレイしようとしています。最終的にカメラのプレビューにオーバーレイするように四角形を描きます。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

それは問題を改善するものなのでしょうか? – Ertebolle

+0

提案していただきありがとうございますが、私はまだ黒の上に表示されます。私はコンストラクタとXML宣言で透明に背景色を設定しようとしました。現在、派生ビューにはコンストラクタと空のonDrawだけがあります。 – Bobby

+0

それは過度のように見えるかもしれませんが、背景がうまくいくように透明な絵を設定するのでしょうか? – MrZander

答えて

2

の上に黒い四角形を取得まあ、this resource fileは、カメラのプレビューの上に重ね、「ファインダー」を持っているバーコードスキャナ取り込みのレイアウト、です。彼らは<color name="transparent">#00000000</color>と定義された独自の@color/transparentリソースを使用します。おそらくコードを覗いて、あなたと彼らが違うところを見つけようとします。

0

src/backgroundの両方を@nullに設定しようとしましたか?

また、この方法がうまくいかない場合は、パスを使用してサーフェスに描画することを検討することができます。実行時に、矩形のサイズ/位置を動的に変更できます。

しかし、SurfaceViewのコードを書いて、あなたがやっていることを過度に行うかもしれないonDrawを処理する必要があります。基本的にはカスタムクラスをここではSurfaceViewの拡張版にすることを意味します。

+0

Hm、nullアプローチを試してみましょう - 私は、SurfaceViewから派生した単一のビューを使用するためにこれを再加工しようとしました - 2つを1つに結合する(オーバーレイするonDrawをSurfaceViewのオーバーレイを描画するために同じPaint-rectangleテクニック)しかし、私は同じ結果を信じるかどうかは分かりません。 – Bobby

0

私はまったく同じことをやっており、カメラプレビューにカスタマイズされたビューオーバーレイを持っています。最初はビューが不透明で、カメラのプレビューがブロックされました。問題はキャンバスに画像を描画しようとしていたが、画像をRGB_565として指定していたため、ARGB_8888に変更しても問題ありませんでした。アルファチャンネルが必要で、カスタムビューの背景が透明に設定されていることを確認してください。

0

アルファチャンネルを0に設定しました。これは魅力的です。

カスタムビューランタイムを追加した後に行います。カスタムビューで `onDraw`メソッドをオーバーライドし、その中に絶対に何もしないしてみてください(` super`を呼び出すことはありません) - 我々は我々のアプリの一つに非常によく似たセットアップを使用して、[OK]を動作するようです

(ImageView) myCustomView.setAlpha(0) 
関連する問題