嗨我目前正在制作游戏,其中包含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);
如果您必须在游戏的每一帧都检索位图,我不确定这在性能方面是个好主意但是值得探索.