2013-06-03 10 views
6

こんにちは、私は現在、surfaceViewのバックグラウンドで可聴周波数効果の視覚化のVIEWを含むゲームに取り組んでいます。surfaceViewにバックグラウンドとしてビューを追加するには?

The surfaceView contains actual game play.

私はいくつかのコードスニペットを投稿: -

main.xml

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_margin="5dp" 
    android:layout_weight="1" 
    android:background="#000" > 

    <co.ardor.visualizer.VisualizerView 
     android:id="@+id/visualizerView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </co.ardor.visualizer.VisualizerView> 
</FrameLayout> 

Visualizer view次のようにが作成されます -

public class VisualizerView extends View 
{ 
    private static final String TAG = "VisualizerView"; 

    private byte[] mBytes; 
    private byte[] mFFTBytes; 
    private Rect mRect = new Rect(); 
    private Visualizer mVisualizer; 
    private Set<Renderer> mRenderers; // type of Renderer class 

    private Paint mFlashPaint = new Paint(); // for flash paint 
    private Paint mFadePaint = new Paint(); // for fade paint 

    public VisualizerView(Context context, AttributeSet attrs, int defStyle) 
    { 
    super(context, attrs); 
    init(); 
} 

    public VisualizerView(Context context, AttributeSet attrs) 
{ 
    this(context, attrs, 0); 
} 

    public VisualizerView(Context context) 
    { 
    this(context, null, 0); 
    } 

    // Some code regarding to the audio visualization.. 
} 

マイVisualizerView事前に私は"How to add VIEW as background of surfaceView?"またはそのための別のよりよい解決策という.Iが問題に引っかかっていSurfaceView(実走行用ゲーム)の背景として、これを追加することができますどのようにうまく動作して.. Thxを..

+0

ビューは、背景として追加することはできません。アクティビティ – Blackbelt

答えて

7

あなたが見ることができる可能性は、View's描画キャッシュBitmapを取得し、にBitmapを追加することです。

Bitmapを取得:

myVisualizerView.setDrawingCacheEnabled(true); 
mVisualizerBitmap = Bitmap.createBitmap(myVisualizerView.getDrawingCache()); 
myVisualizerView.setDrawingCacheEnabled(false); 

はSurfaceViewのonDraw(...)Bitmapを描く:

canvas.drawBitmap(mVisualizerBitmap, //other params); 

ビットマップを取得する必要がある場合、私はパフォーマンスの面で、これは素晴らしいアイディアだか分かりませんあなたのゲームのすべてのフレームが、それは探検する価値があるかもしれません。

+0

に感謝のGunnarのコンテンツビューとして設定する必要がありますが、これはリアルタイムのサウンドビジュアライゼーションには適していません...しかし、私は本当にあなたのアイデアに感心しました。 –

+0

あなたはこれを見たことがありますか:http://stackoverflow.com/questions/5391089/how-to-make-surfaceview-transparent - ? –

+0

私はこのリンクから解決策を得ました。http://stackoverflow.com/a/15873927/2123594しかし、あなたの提案された答えもうまくいきます。ありがとう.. –

1

のLinearLayout、 を使用してそれらを追加し、使用して互いの上にそれらを作ってみる:

android:layout_alignLeft="..." 
android:layout_alignTop="..." 
関連する問題