锁定/解锁屏幕方向

14
为了锁定我的方向为竖屏,我使用:

activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

我不确定哪个标志告诉活动回到依赖于设备方向。 我想它是这些之一:

SCREEN_ORIENTATION_FULL_SENSOR
SCREEN_ORIENTATION_SENSOR
SCREEN_ORIENTATION_UNSPECIFIED
SCREEN_ORIENTATION_USER


另外,为什么安卓文档不是开源的呢?文档完全缺乏。很少有函数和标志有实用的描述。

关于您的附加说明:我是通过从http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation%28int%29点击“用于方向常数”直接跳转到常数含义的界面上找到这个信息的。 - Arthur Shipkowski
是的,我在那个页面上点击了ActivityInfo.screenOrientation链接,然后才发这篇帖子。下一页完全没用,除非你再次点击“screenOrientation”,这会提供各个标志的实际描述。我不明白为什么在“ActivityInfo.screenOrientation”页面点击其中一个标志没有提供相应的解释说明。 - Matt
3个回答

20
根据文档中链接的值,即http://developer.android.com/reference/android/R.attr.html#screenOrientation(其中与这些值相关联的是screenOrientation),SCREEN_ORIENTATION_SENSORSCREEN_ORIENTATION_FULL_SENSOR将实现此功能,具体取决于您需要多少灵活性。但是,我猜您真正想要的是返回默认设置,即SCREEN_ORIENTATION_UNSPECIFIED,以便它返回系统默认设置,包括用户设置的任何设置。

谢谢。我猜我没能成功点击“screenOrientation”链接第二次将我带到实际属性页面。 - Matt
1
我想实际上我点击了三到四次才到达那里,所以我理解你的烦恼。 - Arthur Shipkowski

1
一个简单的解决方法是在AndroidManifest.xml文件中添加一行代码,如下所示:
在应用程序部分添加android:screenOrientation="portrait">。
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".App"
              android:label="@string/app_name"
              android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

在“活动”部分,而不是应用程序部分。 - Peter vdL

0
如果在应用程序的清单条目中为此活动设置了"android:immersive"属性为"true", 即使在运行时使用"setImmersive()"方法更改沉浸模式,ActivityInfo.flags成员始终具有其FLAG_IMMERSIVE位。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接