1

我正在尝试以横向模式启动 MyActivity。问题是它目前以纵向模式启动,然后进入横向模式。

我在 AndroidManifest.xml 中定义了 MyActivity,如下所示:

<activity
        android:name="com.myproject.MyActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:launchMode="singleTop"
        android:screenOrientation="landscape"
        android:taskAffinity="com.myproject"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
</activity>

有什么方法可以强制将活动启动为横向模式?

4

4 回答 4

3

尝试覆盖该onConfigurationChanged方法。

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
于 2013-04-10T04:33:14.617 回答
2

您需要这两个部分来保证性能。

MainActivity.java中,输入以下内容:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

然后在 中AndroidManifest.xml,包括以下内容以防止配置更改:

    <activity
        android:name="com.myproject.MyActivity"
        android:configChanges="orientation|screenSize"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

那应该工作!

于 2016-11-02T22:28:30.047 回答
0

Below example works:

@Override
protected void onCreate(Bundle savedInstanceState) {
    Me = this;
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
于 2014-11-27T10:49:57.293 回答
0
  1. AndroidManifest.xml,在<activity>您想以横向模式强制启动时,添加android:screenOrientation="locked".

  2. 在您想强制以横向模式启动的选项中,onCreate添加ActivityrequestedOrientation = ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE

解释:

  • 当您启动一个 Activity 时,默认 Activity会获取您设备的当前方向,如果您的设备是纵向的,则 Activity 是纵向的。如果您的设备是横向的,则 Activity 是横向的。因此,您需要先锁定方向。
  • 然后你需要在Activity的onCreate中设置方向,如果你不这样做,应用程序就会崩溃。
  • 您也可以在 , 中设置方向onStartonResume但如果您只需要设置一次方向,则只需设置为onCreate
于 2020-12-14T11:41:40.283 回答