samsung rotar rotacion prime porque pantalla grados giratoria girar gira como celular android

rotar - Cómo mantener la pantalla en modo horizontal en Android



rotar pantalla en celular (6)

Tengo una actividad que siempre debería mostrarse en modo horizontal . Así que agregué android:screenOrientation="landscape" .

Pero el problema es que cuando giro el dispositivo 180 grados , la pantalla se invierte. ¿Hay alguna manera de manejar este problema para que los elementos de la pantalla siempre se muestren correctamente?


Así que solo para información de todos, esto es lo que hice.

  1. En el manifiesto de Android se agregó android: screenOrientation = "landscape".
  2. En el método de reanudación añadir estas líneas de código

Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); int orientation = display.getRotation(); if(orientation==Surface.ROTATION_180) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); }

De esta manera, mi pantalla siempre se coloca correctamente, incluso si el usuario sostiene el dispositivo al revés.


El buen método es usar

setRequestedOrientation(6);

6 es el valor para sensorLandscape pero parece que no hay una constante definida para él.


En el Manifiesto de Android escribe esto:

android:configChanges="orientation" android:screenOrientation="landscape"

Como en el siguiente ejemplo.

<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>


En realidad lo que realmente quieres es especificar:

android:screenOrientation="sensorLandscape"

en su AndroidManifest.xml. Esto escuchará los datos del sensor mientras se ajusta entre horizontal y reverseLandscape.


Hmmm Esto también depende un poco de la versión de framework que estés usando. Intenta esto desde el principio:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Si eso funciona muy bien. Si no es así, tiene que contarnos un poco más sobre el diseño de su aplicación.


Otros han mencionado sensorLandscape ... para hacer esto mediante programación en su actividad (o en una actividad base), puede establecer su orientación a eso:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

Lo estoy haciendo en onResume() . Esto respetará el paisaje y el paisaje inverso cuando voltea el dispositivo alrededor de 180 grados en medio de la actividad, sin tener que usar onConfigurationChanged() .

Esto fue útil para mí, ya que para las tabletas solo necesito inversión horizontal / horizontal, y para teléfonos necesito solo reversión vertical / vertical, y no quiero hacer dos archivos separados de AndroidManifest. ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT también existe.