gpt4 book ai didi

android - 如何将 View 作为背景添加到 surfaceView?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:47:36 25 4
gpt4 key购买 nike

您好,我目前正在开发包含 surfaceView 背景中音频效果可视化 View 的游戏。

surfaceView 包含实际的游戏玩法。

我发布了一些代码 fragment :-

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?” 或者任何其他更好的解决方案..提前致谢..

最佳答案

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

检索位图:

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

在 SurfaceView 的 onDraw(...) 中绘制 Bitmap:

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

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

关于android - 如何将 View 作为背景添加到 surfaceView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16891748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com