解锁设备时防止应用程序更改为纵向方向

时间:2019-03-07 16:34:09

标签: android webview hybrid-mobile-app

我正在开发一款可在Android设备的包装式Webview中运行的游戏。一切都按预期进行,在这种情况下,我已将视图锁定为横向,并防止设备在旋转手机时重新启动活动。

但是,如果我让设备进入睡眠状态然后解锁,我的应用程序会在纵向模式下停留片刻,直到设备重新定向为横向。这种行为是有道理的,因为电话自然是纵向使用,但我不希望我的活动从横向切换。

如果我启动任何其他游戏,即用本机代码编写的那些大概游戏,都被锁定为横向模式,然后锁定和解锁手机,则该游戏不会执行相同的快速切换-肖像到风景的舞蹈。

我想念什么?

我在MainActivity中拥有

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE)

在几个地方,包括onConfigurationChanged,onWindowFocusChanged,onPause和onResume。

这是在AndroidManifest中定义我的活动的方式

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:screenOrientation="sensorLandscape"
        android:configChanges="orientation|screenSize"
        android:launchMode="singleTask"
        android:alwaysRetainTaskState="true"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

感谢您的帮助/咨询!

-J.L。

2 个答案:

答案 0 :(得分:0)

您忘记从screenOrientation标签移除传感器。试试这个:

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:screenOrientation="landscape"
        android:configChanges="orientation|screenSize"
        android:launchMode="singleTask"
        android:alwaysRetainTaskState="true"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="stateAlwaysHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

答案 1 :(得分:0)

手机解锁后,该应用仍会显示错误的方向一秒钟。

您是否将setContentView(R.layout.main)移到了onResume,然后放置了方向代码?我会尝试设置方向,然后设置setContentView()