我正在开发一款运行在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.
您忘记从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>
当手机解锁时,应用程序仍会显示为错误的方向。
您是否将setContentView(R.layout.main)移动到onResume,在您放置方向代码的位置?我会尝试设置方向,然后是setContentView()