首页 > 解决方案 > setRequestedOrientation 允许在 1 秒内旋转

问题描述

我目前正在开发一个我想要的 Android 应用程序:

为了做到这一点,我不能将旋转直接设置到清单中,所以我setRequestedOrientation直接使用该方法到onCreate我的活动方法中。

有用。但我有一个无法涵盖的案例:

  1. MainActivity在智能手机的纵向上启动应用程序
  2. 我横向旋转智能手机(活动不旋转)
  3. 我单击一个按钮以启动SecondActivity
  4. 新活动以横向启动,然后旋转为纵向

有没有办法覆盖这种情况?有没有办法SecondActivity在没有这种旋转的情况下直接在智能手机上以纵向打开?

这是一个非常简单的示例中的一些代码:

MainActivity: _

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

        button?.setOnClickListener {
            startActivity(Intent(this, SecondActivity::class.java))
        }
    }
}

SecondActivity: _

class SecondActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

        requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
    }
}

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.myapplication">

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
        <activity
                android:name=".MainActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
        >
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

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

        <activity
                android:name=".SecondActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
        />
    </application>

</manifest>

预先感谢您的帮助。

标签: androidandroid-orientation

解决方案


Yes set the orientation before setContentView

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setContentView(R.layout.activity_second)

推荐阅读