android – 如何将视图作为背景添加到surfaceView?

嗨我目前正在制作游戏,其中包含SurfaceView背景中音频效果可视化的视图.

surfaceView包含实际的游戏.

我发布了一些代码片段: –

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视图创建如下 –

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(实际运行游戏).我遇到了“如何添加视图作为surfaceView的背景?”的问题.或者任何其他更好的解决方案..
Thx提前..

解决方法

您可以查看的一种可能性是检索View的绘图缓存位图,并将Bitmap添加到SurfaceView中,并将其添加到游戏内容后面.

检索位图:

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

在SurfaceView的onDraw(…)中绘制位图:

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

如果您必须在游戏的每一帧都检索位图,我不确定这在性能方面是个好主意但是值得探索.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...