在SurfaceView上叠加Android布局

6
我正在设计一个简单的Android游戏,使用类似Google提供的Lunar Lander示例的surfaceview。我想在屏幕上弹出各种东西,如高分、消息、菜单等,同时surfaceview仍然在后台运行。
问题是我希望"弹出窗口"包含许多设计元素,如图像、文本框等。是否有一种方法可以在XML中创建布局来设计我想要的弹出窗口,然后将其显示在surfaceview上作为一个对象,而不是必须逐个构建每个单独的元素并将它们全部绘制到画布上?
我想从屏幕侧面动画弹出弹出窗口,因此如果我在XML中设计布局,使所有对象都知道彼此的关系,那么就可以将该布局作为一个对象进行动画处理。
这似乎是一件相当简单的事情,但我似乎无法找到如何实现它的方法。
2个回答

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>

在你的Activity中:

TextView myText = new TextView(this);
myText.setText("Something");
addContentView(myText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

不过我对性能问题并不了解。


3
创建弹出窗口的简单方法是将其作为不同的Activity来创建。然后,在您的清单文件中给它一个透明的背景主题,比如Dialog主题。请查看API Demos中的CustomDialog、Translucent和TranslucientBlur示例。它们创建了这样的活动。底层活动在表面上的事实不应改变任何东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接