锁定屏幕方向(安卓)
问题描述:
可能重复:
How to disable orientation change in Android?锁定屏幕方向(安卓)
我正在写一个使用标签,用不同的内容(活动)的Android应用程序。 在其中一项活动中,我想将屏幕方向锁定为“风景”模式, 但在其他活动中,我需要正常方向(根据传感器)。
我现在正在做的是,我打电话
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
当我切换到横向模式的活动,并
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
当我切换回等活动。但是,这似乎并不奏效,整个应用程序锁定了 。这个问题的正常方法是什么?
答
在清单中,您可以将screenOrientation设置为风景。它看起来在XML是这样的:
<activity android:name="MyActivity"
android:screenOrientation="landscape"
android:configChanges="keyboardHidden|orientation|screenSize">
...
</activity>
哪里MyActivity
是要留在景观之一。
android:configChanges=...
行防止在屏幕旋转时调用onResume()
,onPause()
。如果没有这一行,轮换将按照您的要求保持不变,但仍会进行调用。
注:keyboardHidden
和orientation
所需< Android 3.2版(API级13),并且所有三个选项都需要3.2或以上,而不仅仅是orientation
。
答
我有一个类似的问题。
当我进入
<activity android:name="MyActivity" android:screenOrientation="landscape"></activity>
在manifest文件中这个引起的活动,在景观中显示。然而,当我回到之前的活动中时,即使他们被设置为肖像,他们也会在lanscape中显示。但是通过添加
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
在目标活动的OnCreate节之后立即解决了问题。所以我现在使用这两种方法。
答
项目的Android清单文件中,找到您要修复的方向,并添加以下代码段,其活性声明,
android:screenOrientation="landscape"
的横向和纵向添加以下代码,
android:screenOrientation="portrait"
“可能的重复”链接是**不是**这个重复的问题。这个问题是要求**锁定方向**,以便它不能从风景中改变。链接的问题是询问如何在应用程序重新启动**时方向确实发生变化。 – Kent 2013-04-22 22:35:31
这似乎是你想要的:从https://github.com/delight-im/Android-BaseLib/blob/master/Source调用`Screen.lockOrientation(this)`和后来的`Screen.unlockOrientation(this)` /src/im/delight/android/baselib/Screen.java – caw 2015-03-04 20:37:51
请注意,如果您正在使用inline ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT,则4.3以下不允许。然后你可以使用上面的或ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT – Akshay 2015-07-23 21:57:31