android:screenOrientation=”locked” 在旧操作系统版本上

标签 android android-activity screen-orientation android-orientation

即使设备旋转,我也希望我的 Activity 保持启动时的方向,无论是纵向还是横向。引入了 API 级别 18 android:screenOrientation=”locked”应该完成这项工作:将方向锁定到其当前旋转,无论它是什么。

但是,我还想支持较旧的操作系统版本。我怎样才能做到这一点?

我知道 Lock screen orientation (Android)讨论锁定 Activity 到横向模式,How do I disable orientation change on Android?讨论纵向模式下的锁定 Activity (在 Samsung Galaxy S,OS 2.3.3 上对我来说根本不起作用)。我也知道 advice recommending not to do this .

最佳答案

MainActivity.java:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getResources().getConfiguration().orientation == Configuration. ORIENTATION_LANDSCAPE)
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    else
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    // ...
}

我还修改了 list 文件。但是,我不确定是否需要这些更改,至少 android:screenOrientation="unspecified" 无论如何是默认的 screenOrientation 值。 AndroidManifest.xml:

<activity android:name="MainActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:screenOrientation="unspecified" />

关于android:screenOrientation=”locked” 在旧操作系统版本上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21361338/

相关文章:

android - Android 设备旋转时如何保留警报对话框

iOS横向左vs右vs错误

ios - 特定 View Controller 上的自定义方向

android - 如何在android中将图库或捕获的图像上传到服务器

android - ququer背后的技术是什么?

java - 在 google maps api v2 中膨胀 fragment 异常

android - 确认 Activity Android Wear 持续时间太短

android - 使用 BaseAdapter 的 ListView 搜索功能不会在搜索时填充列表

Activity 中的 Android 完成功能不起作用

android - Activity.isFinishing() 的 fragment 等价物是什么?