SurfaceView的Android更改布局

时间:2011-08-29 01:09:00

标签: android layout surfaceview

我正在制作一个带有登录屏幕的应用程序,然后进入玩游戏的表面视图。问题是用户可以在播放时注销,我需要能够将用户返回到登录屏幕。我该怎么做?

我尝试将其添加到surfaceview,但它没有做任何事情:

((Activity)getContext()).setContentView(R.layout.login);

编辑:

问题已解决,这是我在surfaceview中添加的代码:

        Intent intent = new Intent();
        intent.setClass(getContext(), BattleLogin.class);
        ((Activity)getContext()).startActivityForResult(intent,loginResult);

值得注意的是,不要忘记将新活动添加到清单中。

2 个答案:

答案 0 :(得分:1)

为什么不尝试创建一个Intent来启动一个新的Activity来处理用户登录?当用户与新屏幕交互时,它会使前一个专用于SurfaceView的Activity暂停在堆栈中。

您可以在SurfaceView活动中的任何位置使用详细herestartActivityForResult()来获取状态信息,例如成功登录或登录活动完成时的内容。

答案 1 :(得分:0)

不会带有

的警告对话框
Login Name:
Password:

的工作。用户应该能够输入凭据并继续。

也许保存凭据应该允许用户自动登录

using a progress dialog

游戏暂停时。

<强>更新

与对话框关联的错误可能是由于UI线程问题。

但她是一个快速黑客

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/wrapper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <SurfaceView
        android:id="@+id/surface"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <RelativeLayout android:id="@+id/my_dialog"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="**visible|gone**"
    >
        <your loging layout comes here />
    </RelativeLayout>
</RelativeLayout>

这将漂浮在表面之上。但你需要冻结表面(暂停你的游戏),这个布局也不应该完全隐藏表面。