vista studio rotación rotacion poner pantalla orientación orientacion manejando horizontal detectar como cambio cambiar java android configuration orientation

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



rotacion de pantalla android studio (8)

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?


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 }


En caso de que a alguien le gustaría obtener meaningful descripción de orientación meaningful (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.

<activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name">

¡¡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.


Activity.getResources().getConfiguration().orientation


getActivity().getResources().getConfiguration().orientation

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


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 Activity


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