¿Cómo puedo obtener la orientación actual de la pantalla?
Sólo quiero establecer algunas banderas cuando mi orientación está en el paisaje de modo que cuando la actividad se recrea en onCreate () puedo alternar entre lo que se carga en el retrato frente al paisaje. Ya tengo un xml de layout-land que está manejando 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); }
Over-riding onConfigurationChanged evitará que mi xml de layout-land se cargue en la orientación horizontal.
- Android configuración de la orientación de la actividad por código
- Bloqueo de orientación de la pantalla
- Sólo en la aplicación Android
- Orientación de la pantalla de Android NDK
- ¿Cuáles son los pros y los contras de usar configChanges = "orientación" para dispositivos Android?
Sólo quiero obtener la orientación actual de mi dispositivo en onCreate (). ¿Cómo puedo obtener esto?
- Orientación de la pantalla y valores en manifest.xml
- Los metadatos Exif no proporcionan orientación para las imágenes de unidades de Google
- Android Guardar imagen Exif Información goes Wrong in Marshmallow 6.0.1
- ¿Cuál es la diferencia entre Display.getRotation () y Display.getOrientation () aparte del hecho de que Display.getOrientation () está obsoleto?
- Android obtener el tamaño de la pantalla de la orientación de la pantalla de otros
- Cómo obtener los ángulos euler del vector de rotación (Sensor.TYPE_ROTATION_VECTOR)
- Cómo controla la orientación de la pantalla del dispositivo Android
- Apoyo a las dos orientaciones del paisaje en Honeycomb
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 Activity
En algunos dispositivos void onConfigurationChanged()
puede bloquearse. El usuario utilizará 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();
Esto dará toda la orientación como normal y reversa
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 valor int 1 para Portrait y 2 para Landscape
En el caso de que alguien quiera obtener una descripción de orientación significativa (como la que se pasa a onConfigurationChanged(..)
con aquellos reverseLandscape
, sensorLandscape
y así sucesivamente), simplemente use getRequestedOrientation()
Si desea reemplazar ese método onConfigurationChanged y todavía quiere que haga las cosas básicas, considere utilizar super.onConfigyrationChanged () como la primera instrucción en el método overriden.
En su clase de actividad utilice el método siguiente:
@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"); } }
A continuación, para declarar que su actividad gestiona 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 utilizados son "orientación" para evitar que se reinicie cuando cambie la orientación de la pantalla y "keyboardHidden" para evitar que se reinicie cuando cambie la disponibilidad del teclado). Puede declarar varios valores de configuración en el atributo separándolos con un pipe | personaje.
<activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name">
¡¡Eso es todo!!