在surfaceview上叠加Android布局

时间:2010-10-18 02:42:48

标签: android layout overlay surfaceview

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

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

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

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

2 个答案:

答案 0 :(得分: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));

不知道性能问题。

答案 1 :(得分:3)

执行此操作的一种简单方法是将弹出式界面创建为另一个Activity。然后,您将在清单文件中为其提供透明的背景主题,如Dialog主题。

查看API演示中的CustomDialog,Translucent和TranslucientBlur示例。他们创造了这样的活动。基础活动在表面上的事实不应该改变任何东西。