在surfaceview上叠加Android布局

BGH*_*BGH 6 layout android overlay surfaceview

我正在使用类似于Google提供的Lunar Lander示例的surfaceview设计一款简单的Android游戏.我希望在屏幕上弹出高分,消息,菜单等各种内容,表面视图仍然在后台.

问题是我希望"弹出窗口"包含许多设计元素,如图像,文本框等.有没有办法我可以用XML创建一个布局来设计我想要的弹出窗口然后在surfaceview上显示为一个对象而不是必须在代码中逐个构造每个单独的元素并将它们全部绘制到画布上?

我想从屏幕的侧面为弹出窗口设置动画,所以如果我用XML设计布局以便所有对象知道它们之间的关系然后将该布局设置为一个对象,那将是一件好事.

它让我觉得很简单,但我似乎无法找到如何实现它.

Abh*_*nav 6

您可以在代码或XML布局中将元素叠加在SurfaceView之上.

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
<android.view.SurfaceView
        android:id="@+id/mysurface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
</android.view.SurfaceView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

在您的活动中:

TextView myText = new TextView(this);
myText.setText("Something");
addContentView(myText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)

但是不知道性能问题.


Jea*_*ean 3

执行此操作的一个简单方法是将弹出界面创建为不同的活动。然后,您可以在清单文件中为其指定透明背景主题,例如对话框主题。

查看 API 演示中的 CustomDialog、Translucent 和 TranslucientBlur 示例。他们创造了这样的活动。底层活动位于表面这一事实不应改变任何事情。