在运行时更改屏幕方向,但禁用基于传感器的更改

时间:2015-07-13 20:40:10

标签: java android

我正在尝试创建一个Android应用程序。我想在应用程序开始时选择方向。但在那之后,我不希望改变方向,无论他们的手机如何定位。我知道我可以把android:screenorientation放在清单文件中并锁定方向,但我真的不想这样做。我想要的是,最初,我会将方向设置为默认方向,让我们说景观。然后,用户将有一次机会更改方向,之后方向将被锁定。如果用户在应用程序启动期间未选择方向,则方向将锁定为默认方向。所以,我只需要知道如何不在方向变化上重新加载活动。我不确定我是否足够好解释我的情况。但是,提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

为此,首先在清单中声明活动,如下所示:

<activity android:name=".StartActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">

这意味着现在,当为此Activity调用设备方向时,而不是Android重新创建它,它将从Activity调用onConfigurationChanged()方法。您现在要做的就是声明该方法:

public void onConfigurationChanged(Configuration newConfig) {
    // Do nothing -- if that is what you really want !!

    // Check the orientation of the screen if you need to do something
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}

您可以在Android - Handling runtime changes

了解更多相关信息