6

こんにちは私は現在、SurfaceView の背景にオーディオ周波数効果の視覚化の VIEW を含むゲームに取り組んでいます。

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はうまく動作しているので、これをSurfaceView(実際に実行中のゲーム)の背景として追加する方法.私はその問題"How to add VIEW as background of surfaceView?"またはそのための別のより良い解決策..前もってThx..

4

2 に答える 2

7

検討できる可能性の 1 つは、View's描画キャッシュを取得し、ゲーム コンテンツの背後に描画された にBitmapを追加することです。BitmapSurfaceView

次を取得しBitmapます。

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

BitmapSurfaceView でを描画しonDraw(...)ます。

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

ゲームのフレームごとにビットマップを取得する必要がある場合、これがパフォーマンスの点で優れたアイデアであるかどうかはわかりませんが、検討する価値はあります。

于 2013-06-08T00:17:31.727 に答える
1

LinearLayout を使用してそれらを追加し、次を使用して互いの上に作成してみてください。

android:layout_alignLeft="..."
android:layout_alignTop="..."
于 2013-06-09T09:47:13.007 に答える