105 votes

Comment verrouiller l'orientation d'une application Android en mode portrait sur les téléphones et en mode paysage sur les tablettes ?

Je développe une application Android dont je ne veux pas que l'orientation passe en mode paysage lorsque l'utilisateur fait pivoter l'appareil. De plus, je veux que l'orientation verrouillée soit en mode portrait sur les téléphones et en mode paysage sur les tablettes. Est-ce possible ? Si oui, comment ? Merci.

188voto

Möbius Points 6058

Il vous suffit de définir la propriété ci-dessous à l'intérieur de l'élément activité dans votre AndroidManifest.xml fichier. Cela limitera votre orientation à un portrait.

Android:screenOrientation="portrait" (en anglais)

Exemple :

        <activity
            android:name="com.example.demo_spinner.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

si vous voulez que cela s'applique à l'ensemble de l'application, définissez la propriété ci-dessous à l'intérieur de la balise d'application comme suit :

        <application>
         android:screenOrientation="sensorPortrait"
        </application>

De plus, selon le commentaire d'Eduard Luca ci-dessous, vous pouvez aussi utiliser screenOrientation="sensorPortrait" si vous voulez activer la rotation de 180 degrés.

51voto

Halim Qarroum Points 5758

Vous devez ajouter le android:screenOrientation="portrait" dans votre AndroidManifest.xml . Ceci doit être fait dans votre <activity> étiquette.

En outre, le guide des développeurs Android indique que :

[...] vous devez également déclarer explicitement que votre application nécessite l'orientation portrait ou paysage de l'élément l'élément Par exemple, <uses-feature android:name="android.hardware.screen.portrait" /> .

26voto

Radu Simionescu Points 687

Je vois que vous avez accepté une réponse qui ne résout pas entièrement votre problème :

android:screenOrientation="portrait" 

Cela obligera votre application à être portraiturée à la fois sur les téléphones et les tablettes.

Vous pouvez forcer l'application à adopter l'orientation "préférée" de l'appareil en utilisant la fonction

android:screenOrientation="nosensor"

Cela aura pour effet de forcer votre application à être en portrait sur la plupart des téléphones et en paysage sur les tablettes. Il existe de nombreux téléphones dont le clavier a été conçu pour le mode paysage. Forcer votre application en mode portrait peut la rendre presque inutilisable sur ces appareils. Android a récemment migré vers d'autres types d'appareils. Il est préférable de laisser l'appareil choisir l'orientation préférée.

12voto

sunshine Points 3779

C'est possible... vous devez identifier si c'est une tablette ou un téléphone par programmation... Vérifiez d'abord si l'appareil est un téléphone ou une tablette

Déterminer si l'appareil est un smartphone ou une tablette ?

Tablette ou téléphone - Android

Puis......

if(isTablet)
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);      
}else
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

3voto

Sumodh S Points 469
<activity android:name=".yourActivity"
          android:screenOrientation="portrait" ... />

ajouter à l'activité principale et ajouter

android:configChanges="keyboardHidden"

pour empêcher votre programme de changer de mode lorsque le clavier est appelé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X