代码之家  ›  专栏  ›  技术社区  ›  alex2k8

如何锁定应用程序方向(横向或纵向)?

  •  13
  • alex2k8  · 技术社区  · 14 年前

    我试过用以下方法冻结方向:

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    

    尽管显示保持纵向,但仍会重新创建活动。有什么办法解决这个问题吗?

    如何锁定应用程序的方向,以便在方向更改时不重新创建活动?

    4 回复  |  直到 8 年前
        1
  •  40
  •   CommonsWare    14 年前

    首先,不要使用 setRequestedOrientation() 如果你能避免的话。使用 android:screenOrientation 你的属性 <activity> 改为manifest元素。

    其次,你还需要 android:configChanges="keyboardHidden|orientation" 在你 <活动& 阻止销毁/重新创建循环的清单元素。

        2
  •  4
  •   Rodrigo    10 年前

    用于纵向的androidmanifest.xml的activity部分的一个更具体的示例:

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    

    在哪里? android:screenOrientation 设置初始方向和 android:configChanges 使在屏幕更改时触发相应生命周期方法的事件无效。

        3
  •  3
  •   Roxhn    8 年前

    试试这个:

    1.-在androidmanifest.xml中设置所需的屏幕方向

    android:screenOrientation="portrait|landscape"
    

    应该是这样的:

        <application
        android:allowBackup="true"
        android:icon="~icon path~"
        android:label="~name~"
        android:supportsRtl="true"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme">
        </application>
    

    2。-将此添加到Java活动文件中的OnCuto空(或您想要的任何地方)(示例:“MaultActudio.java”):

    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
    

    应该是这样的:

    protected void onCreate(Bundle savedInstanceState) {
        super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}
    

    现在,即使设备中的屏幕旋转打开,屏幕也不会移动。

        4
  •  1
  •   abhi    11 年前

    最好的解决方案是使用保存的实例。 如果锁定屏幕方向,则表示您正在强制用户根据您设置的限制使用应用程序。所以一定要使用onSaveInstanceState。阅读此链接: http://developer.android.com/training/basics/activity-lifecycle/recreating.html