Androidアプリケーションを縦向きモードでのみ実行したいですか?


回答:


778

マニフェストで、これをすべてのアクティビティに設定します。

<activity android:name=".YourActivity"
    android:configChanges="orientation"
    android:screenOrientation="portrait"/>

説明させてください:

  • ではandroid:configChanges="orientation"もしあなたが向きの変化の責任を負うことにアンドロイドを教えてください。
  • android:screenOrientation="portrait" デフォルトの方向モードを設定します。

50
アプリケーションのすべてのアクティビティに「グローバル」方向を設定できたら、すばらしいと思いませんか?オプションがないようですが、すべてのアクティビティに "portrait"属性をコピーして貼り付けてください...
Eduardo Coelho

63
設定するだけで十分ですandroid:screenOrientation="portrait"
2013

11
@EduardoCoelhoあなたは実際に基本クラスPortraitActivityを作成し、onCreate呼び出しでsetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)これを拡張するすべてのアクティビティは回転しません
Twinone

1
@Twinone:どのように異なるの活動は別のサブクラスを継承したい場合についてActivity一つの活性がから延びているように、ListActivity他の人から、単純に延びていますかActivity
RestInPeace 2014年

3
@RestInPeaceうん、いいね。しかし、それは私の考えが間違っているのではなく、それは単なるJavaが多重継承をサポートしていないことです:)
Twinone

57

Androidマニフェストファイルに、<activity>その属性を入力しますandroid:screenOrientation="portrait"


2
追加させてください:Android Sudio 3.6以降では、android:screenOrientation = "fullSensor"またはandroid:screenOrientation = "unspecified"を使用する必要があります。fullSensorは、「回転オフ」がオンになっているかどうかによって、電話機の移動に基づいて向きが変わることを意味します。未指定回転をオンにしている場合は、その方向にのみ留まり、そうでない場合は、携帯電話の移動に基づいて方向を変更します。
Kirguduck

24

2つの方法があります。

  1. android:screenOrientation="portrait"マニフェストファイルの各アクティビティに追加
  2. this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);各Javaファイルに追加します。

14
2番目のオプションには、Portraitで起動したときにアクティビティを再開するという恐ろしい副作用があります。
Joakim

4

マニフェスト内:

<activity android:name=".activity.MainActivity"
        android:screenOrientation="portrait"
        tools:ignore="LockedOrientationActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

または:MainActivity内

@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

わかりますapp/src/main/AndroidManifest.xml; lineNumber: 20; columnNumber: 50; The prefix "tools" for attribute "tools:ignore" associated with an element type "activity" is not bound.。追加xmlns:tools="http://schemas.android.com/tools"ルート要素にすることで問題解決
Żabojad

3

私の知っている古い記事。(タブレットなどで)向きが入れ替わったり、入れ替わったりする場合でも、常にアプリを縦向きモードで実行するために、縦向きと横向きを知らなくても、デバイスを正しい向きに設定するために使用するこの機能を設計しました機能はデバイス上で整理されています。

   private void initActivityScreenOrientPortrait()
    {
        // Avoid screen rotations (use the manifests android:screenOrientation setting)
        // Set this to nosensor or potrait

        // Set window fullscreen
        this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        DisplayMetrics metrics = new DisplayMetrics();
        this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

         // Test if it is VISUAL in portrait mode by simply checking it's size
        boolean bIsVisualPortrait = ( metrics.heightPixels >= metrics.widthPixels ); 

        if( !bIsVisualPortrait )
        { 
            // Swap the orientation to match the VISUAL portrait mode
            if( this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT )
             { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }
            else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
        }
        else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); }

    }

魅力的な作品!

注意:this.activityアクティビティごとに変更するか、メインアクティビティに追加して削除してくださいthis.activity;-)


-5

私が使う

 android:screenOrientation="nosensor"

ポートレートモードを上下逆にしたくない場合に便利です。


これが私が思っていることを実行したとしても、画面を強制的に縦向きにすることはできません。
Lassi Kinnunen 2014年

このコメントを削除しないでください!意味がありません
アレクサンダーザルドスタノフ2015年

Androidマニフェストファイルで、<activity>の属性を追加するだけです。android:screenOrientation = "portrait"
Avinash Shinde

あなたの答えをありがとう、これは私にとって役に立ちます。
ショフィウラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.