2010-09-16 9 views

Répondre

585

Dans le manifeste, réglez ce paramètre pour toutes vos activités:

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

Laissez-moi vous expliquer:

  • Avec android:configChanges="orientation" vous dire Android que vous serez responsable des changements d'orientation.
  • android:screenOrientation="portrait" vous définissez le mode d'orientation par défaut.
+37

ne serait pas great Si nous pouvions définir une orientation "globale" pour toutes les activités dans l'application? On dirait que nous n'avons pas d'autre choix que copier/coller l'attribut "portrait" sur chaque activité ... –

+41

Il suffit de régler 'android: screenOrientation =" portrait "' – Till

+7

@EduardoCoelho vous pouvez réellement faire une classe de base 'PortraitActivity' et dans onCreate call 'setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)' Toutes les activités qui s'étendent ne tourneront pas – Twinone

39

Dans Android fichier Manifest, mettre attribut pour votre <activity> que android:screenOrientation="portrait"

-4

J'utilise

android:screenOrientation="nosensor" 

Il est utile si vous ne voulez pas soutenir la tête en bas en mode portrait.

+0

Si cela fait ce que je pense, cela ne force pas vraiment l'écran à portrait, ce que vous pourriez vouloir faire. –

+0

pourquoi ne pas simplement supprimer ce commentaire!cela n'a pas de sens –

20

Il y a deux façons,

  1. Ajouter android:screenOrientation="portrait" pour chaque activité dans le fichier Manifest
  2. Ajouter this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); dans chaque fichier java.
+9

La deuxième option a l'effet secondaire horrible qu'elle redémarrera votre activité quand elle est commencée dans Portrait. – Joakim

3

Ancien article que je connais. Pour que votre application soit toujours en mode portrait, même lorsque l'orientation est permutée ou permutée (par exemple sur des tablettes), j'ai conçu cette fonction qui permet de régler l'appareil 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: changement this.activity par votre activité ou l'ajouter à l'activité principale et de supprimer this.activity ;-)

-6

Dans le manifeste, réglez ce paramètre pour toutes vos activités:

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

Vous devriez supprimer cette réponse car vous avez posté une autre réponse avec la même information. – Mangesh

Questions connexes