¿Cómo puedo obtener la orientación actual de la pantalla?

Solo quiero establecer algunas banderas cuando mi orientación está en el paisaje para que cuando se recrea la actividad en onCreate () pueda alternar entre qué cargar en vertical y horizontal. Ya tengo un xml de layout-land que maneja mi diseño.

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

El uso excesivo deConfigurationChanged evitará que mi layout-land xml se cargue en orientación horizontal.

Solo quiero obtener la orientación actual de mi dispositivo en onCreate (). ¿Cómo puedo conseguir esto?

 Activity.getResources().getConfiguration().orientation 
 int orientation = this.getResources().getConfiguration().orientation; if (orientation == Configuration.ORIENTATION_PORTRAIT) { // code for portrait mode } else { // code for landscape mode } 

Cuando la superclase de this es Context

En algunos dispositivos, void onConfigurationChanged() puede bloquearse. El usuario usará este código para obtener la orientación actual de la pantalla.

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

Y use

 if (orientation==1) // 1 for Configuration.ORIENTATION_PORTRAIT { // 2 for Configuration.ORIENTATION_LANDSCAPE //your code // 0 for Configuration.ORIENTATION_SQUARE } 
 int rotation = getWindowManager().getDefaultDisplay().getRotation(); 

esta voluntad da toda la orientación como normal e inversa

y manejarlo como

 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; } 
 getActivity().getResources().getConfiguration().orientation 

este comando devuelve el valor int 1 para Portrait y 2 para Landscape

En caso de que a alguien le gustaría obtener una descripción de orientación significativa (como la que pasó a onConfigurationChanged(..) con esos reverseLandscape , sensorLandscape y demás), simplemente use getRequestedOrientation()

En tu clase de actividad utiliza el siguiente método:

  @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Checks the orientation of the screen if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { setlogo();// Your Method Log.d("Daiya", "ORIENTATION_LANDSCAPE"); } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { setlogoForLandScape();// Your Method Log.d("Daiya", "ORIENTATION_PORTRAIT"); } } 

Luego, para declarar que su actividad maneja un cambio de configuración, edite el elemento apropiado en su archivo de manifiesto para incluir el atributo android:configChanges con un valor que represente la configuración que desea manejar. Los valores posibles se enumeran en la documentación del atributo android:configChanges (los valores más comúnmente utilizados son “orientación” para evitar reinicios cuando la orientación de la pantalla cambia y “keyboardHidden” para evitar que se reinicie cuando cambia la disponibilidad del teclado). Puede declarar múltiples valores de configuración en el atributo separándolos con un conducto | personaje.

  

¡¡Eso es todo!!

si desea anular ese método onConfigurationChanged y aún desea que haga las cosas básicas, considere usar super.onConfigyrationChanged () como la primera instrucción en el método modificado.