web-dev-qa-db-ja.com

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

Androidアプリケーションを縦向きモードでのみ実行したいですか。どうやってやるの?

310
James

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

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

説明させてください:

  • Android:configChanges="orientation"を使用すると、Androidに、向きの変更を担当することを伝えます。
  • Android:screenOrientation="portrait"は、デフォルトの方向モードを設定します。
708
Cristian

Androidのマニフェストファイルで、<activity>Android:screenOrientation="portrait"の属性を入れます。

47
Praveen

2つの方法があります。

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

古い記事私は知っています。タブレットの向きなどが違う場合でも、アプリを常に縦向きモードで実行するために、私はこの機能をデザインしました。機能はデバイス上で編成されています。

   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 ;-)を削除してください。

3
Codebeat