215 votes

Comment puis-je obtenir l'orientation actuelle de l'écran ?

Je veux juste définir quelques drapeaux lorsque mon orientation est en paysage, de sorte que lorsque l'activité est recréée dans onCreate(), je puisse basculer entre ce qui doit être chargé en portrait et en paysage. J'ai déjà un xml layout-land qui gère ma mise en page.

public void onConfigurationChanged(Configuration _newConfig) {

        if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            this.loadURLData = false;
        }

        if (_newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            this.loadURLData = true;
        }

        super.onConfigurationChanged(_newConfig);
    }

Le dépassement de la valeur de onConfigurationChanged empêchera le chargement du fichier xml de ma zone de mise en page en orientation paysage.

Je veux juste obtenir l'orientation actuelle de mon appareil dans onCreate(). Comment puis-je l'obtenir ?

508voto

EboMike Points 39257
Activity.getResources().getConfiguration().orientation

9 votes

Il ne fournit que deux valeurs : ORIENTATION_PORTRAIT et ORIENTATION_LANDSCAPE. Existe-t-il un moyen d'obtenir les quatre valeurs de ActivityInfo ? (c'est-à-dire LANDSCAPE_REVERSE et PORTRAIT_REVERSE également).

19 votes

@HRJ vous pouvez utiliser getWindowManager().getDefaultDisplay().getRotation()

25 votes

GetWindowManager().getDefaultDisplay().getRotation() renvoie la rotation en référence à l'orientation "naturelle" de l'écran, c'est-à-dire que pour une tablette, elle renverra Surface.ROTATION_0 en mode paysage, alors que pour un téléphone mobile, elle renverra la même valeur en mode portrait.

30voto

AndroidBeginner Points 35
int rotation =  getWindowManager().getDefaultDisplay().getRotation();

cela donnera toutes les orientations comme normale et inverse

et le traiter comme

int angle = 0;
switch (rotation) {
    case Surface.ROTATION_90:
        angle = -90;
        break;
    case Surface.ROTATION_180:
        angle = 180;
        break;
    case Surface.ROTATION_270:
        angle = 90;
        break;
    default:
        angle = 0;
        break;
}

0 votes

final int angle = (rotation == Surface.ROTATION_90) ? 90 : (rotation == Surface.ROTATION_180) ? 180 : (rotation == Surface.ROTATION_270) ? 270 : 0;

28voto

Sakthimuthiah Points 571

Dans certains dispositifs void onConfigurationChanged() peut s'écraser. L'utilisateur utilisera ce code pour obtenir l'orientation actuelle de l'écran.

public int getScreenOrientation()
{
    Display getOrient = getActivity().getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;
    if(getOrient.getWidth()==getOrient.getHeight()){
        orientation = Configuration.ORIENTATION_SQUARE;
    } else{ 
        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }
    }
    return orientation;
}

Et utiliser

if (orientation==1)        // 1 for Configuration.ORIENTATION_PORTRAIT
{                          // 2 for Configuration.ORIENTATION_LANDSCAPE
   //your code             // 0 for Configuration.ORIENTATION_SQUARE
}

1 votes

Veuillez noter que getOrient.getWidth() et getOrient.getHeight() sont désormais obsolètes.

0 votes

Devrait être marquée comme la réponse correcte car elle est beaucoup plus détaillée.

1 votes

Devrait être marqué comme la bonne réponse et fonctionne le mieux dans toutes les conditions. Mais veuillez noter que, comme l'a dit un autre utilisateur, getActivity().getWindowManager().getDefaultDisplay().getWidth() et getHeight() sont désormais obsolètes. Veuillez utiliser getSize(Point outsize). Il peut être utilisé pour passer un nouvel objet point et il obtiendra ses membres x et y.

13voto

Rudolf Coutinho Points 56
getActivity().getResources().getConfiguration().orientation

cette commande renvoie la valeur int 1 pour Portrait et 2 pour Paysage

5voto

a.ch. Points 4560

Au cas où quelqu'un voudrait obtenir significatif description de l'orientation (comme celle transmise à onConfigurationChanged(..) avec ceux reverseLandscape , sensorLandscape et ainsi de suite), il suffit d'utiliser getRequestedOrientation()

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