6

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

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

我想从屏幕一侧为弹出窗口设置动画,所以如果我在 XML 中设计布局以便所有对象都知道它们彼此之间的关系,然后将该布局作为一个对象进行动画处理,那就太好了。

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

4

2 回答 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>

在您的活动中:

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

虽然不知道性能问题。

于 2010-10-18T06:09:47.127 回答
3

一种简单的方法是将弹出界面创建为不同的 Activity。然后,您将在清单文件中为其提供透明背景主题,例如对话框主题。

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

于 2010-10-18T03:08:09.633 回答