アプリケーションの方向(風景またはポートレート)はどのようにロックされていますか?

StackOverflow https://stackoverflow.com/questions/2663427

  •  27-09-2019
  •  | 
  •  

質問

私は以下を使用してオリエンテーションを凍結しようとしました。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

ディスプレイはポートレートオリエンテーションにとどまりますが、活動はまだ再現されています。これを解決する方法はありますか?

アプリケーションの方向をどのようにロックして、アクティビティがオリエンテーションの変化で再現されないようにすることができますか?

役に立ちましたか?

解決

まず、使用しないでください setRequestedOrientation() あなたがそれを避けることができるなら。使用 android:screenOrientation あなたの属性 <activity> 代わりにマニフェスト要素。

第二に、あなたも必要です android:configChanges="keyboardHidden|orientation" あなたの中で <activity> 破壊/再作成サイクルを防ぐためのマニフェスト要素。

他のヒント

ポートレートオリエンテーションのAndroidManifest.xmlのアクティビティセクションのより具体的な例:

    <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 画面の変更で対応するライフサイクルメソッドをトリガーするイベントを無効にします。

これを試して:

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アクティビティファイルのOnCreate void(またはどこでも)にこれを追加します(例: "mainActivity.java"):

super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

このように見えるはずです:

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

画面の回転がデバイスでオンになっていても、画面が移動しません。

最良の解決策は、保存されたインスタンスを使用することです。画面の向きをロックしている場合、ユーザーが設定した制約に従ってアプリを使用することを強制していることを意味します。したがって、常にonsaveinstancestateを使用してください。このリンクを読む: http://developer.android.com/training/basics/activity-lifecycle/recreating.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top