web-dev-qa-db-fra.com

Je souhaite que mon application Android ne s'exécute qu'en mode portrait?

Je souhaite que mon application Android ne s'exécute qu'en mode portrait? Comment puis je faire ça?

320
James

Dans le manifeste, définissez ceci pour toutes vos activités:

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

Laissez-moi expliquer:

  • Avec Android:configChanges="orientation" vous dites Android que vous serez responsable des changements d’orientation.
  • Android:screenOrientation="portrait" vous définissez le mode d'orientation par défaut.
708
Cristian

Dans Android Fichier manifeste, mettez l'attribut pour votre <activity> que Android:screenOrientation="portrait"

48
Praveen

Il y a deux façons

  1. Ajouter Android:screenOrientation="portrait" pour chaque activité du fichier manifeste
  2. Ajoutez this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); dans chaque fichier Java.
24

Ancien post je sais. Pour que votre application fonctionne toujours en mode portrait même lorsque l'orientation peut être ou est intervertie, etc. (par exemple sur des tablettes), j'ai conçu cette fonction qui permet de définir le périphérique dans la bonne orientation sans avoir besoin de savoir comment le portrait et le paysage les fonctionnalités sont organisées sur l'appareil.

   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); }

    }

Fonctionne comme un charme!

AVIS: Modifiez this.activity par votre activité ou ajoutez-la à l'activité principale et supprimez this.activity ;-)

3
Codebeat