2012-03-21 13 views
11

Quiero usar todas las actividades en mi forma en horizontal o vertical. Cuando el usuario selecciona la orientación, esto es válido para todas las actividades. Probado con orientación de opción "detrás". Según Google, la orientación dependerá de la actividad previa. Mi primera actividad usa setRequestedOrientation para establecer la orientación de usuario seleccionada. Las siguientes actividades tienen que seguir la misma orientación. ¿Debo poner también setRequestedOrientation en su código? O relly en el parámetro 'detrás' en manifet? Poner setRequestedOrientation puede ser causa onCreate nuevamente?Orientación de pantalla y valores en manifest.xml

ACTUALIZACIÓN: Probado "retrato" y setRequestedOrientation() - resilt si onCreate fue llamado 2 veces. El problema está en la actividad siguiente -> debido a "retrato" en la primera actividad - android comenzó la actividad siguiente con la misma orientación. Ignora wich "paisaje" orientación se estableció por mí :(

Respuesta

0

Por ahora pongo comprobar en onCreate:

m_bSkip = (this.getRequestedOrientation() != MyApp.sInstance.GetScreenOrientation()); 
if (m_bSkip) 
    return; 

Cuando entro alcrear y no se desea la orientación de la pantalla - salida. Cuando ingreso en Crear y la orientación de la pantalla es deseada, continúe con la inicialización. Esto soluciona la situación sin necesidad de mantener una tarea asíncrona relacionada con la actividad y comprobar si hay actividad nueva. Por supuesto, todas las funciones: onStart, onResume, onPausde, onStop ... tienen que marcar esta bandera para evitar la excepción del puntero nulo.

16

Si usted quiere tener orientación fija para sus actividades, entonces se puede usar-

androide: screenOrientation = "retrato"

android:screenOrientation="sensorPortrait" 

como un atributo para esa actividad en ese manifiesto. Pero si desea establecer el tiempo de orientación de orientación según la orientación anterior al iniciar la aplicación, debe verificar la orientación anterior en onCreate() y luego establecerla en ese valor programáticamente allí mismo u cantar setRequestedOrientation()

ACTUALIZACIÓN: Como se ha señalado por @ s.co.tt uso android:screenOrientation="sensorPortrait" para un mejor apoyo en las tabletas.

Para más detalles sobre los diferentes valores para android:screenOrientation y lo que cada uno de ellos, mirar los documentos:

https://developer.android.com/guide/topics/manifest/activity-element.html#screen

+0

Esto provocará que onCreate sea llamado dos veces :(y el problema no termine aquí. Siguiente activiti starter como portrait debido a 'portrait' de primeros. Android ignora el estado actual/landscape/ – Kostadin

+0

Intenté depurar el código. NO presionar 'onCreate()' dos veces. Y la siguiente actividad también seguirá el mismo código en 'onCreate()' para obtener la orientación. – Rajkiran

+5

No use 'portrait'. En algunas tabletas (y probablemente en otros dispositivos) su actividad se mostrará al revés, ya que esos dispositivos creen que es la orientación vertical correcta por defecto. 'sensorPortrait' (o en las API antiguas, el' sensorPortait' mal escrito) mostrará su contenido solo en el retrato, pero lo rotará para que coincida en el que el dispositivo está en manos del usuario. –

0

Desde mi experiencia que recomendaría a setRequestedOrientation en todas las actividades en el método onCreate, onCreate no se volverá a llamar, es seguro.

+0

Después de configurar 'portrait' en manifest y llamar a setRequestedOrientation() - onCreateWas llamado dos veces :(/ hasta que la orientación actual y la referencia sean las mismas/ – Kostadin

+0

Pensé que arreglaras por ejemplo 'portrait' y pasaras a la actividad que también establece 'portrait' this Conservar la orientación cambia si el usuario gira el dispositivo. Si pasa de una orientación a otra, seguramente se repetirá oncreate. Podría describir su caso de uso más detallada. –

+0

La actividad de Firsta se inicia, pero la orientación debe establecerse según mi configuración He leído las configuraciones y establezco la orientación de la primera actividad/en onCreate /. Luego comienzo la segunda actividad. La segunda actividad tiene que tener la misma orientación debido a la bandera "detrás". Pero la segunda actividad tiene la misma orientación que manifestó en el manifiesto para el primero – Kostadin

7
<activity 
      android:name=".Android_mobile_infoActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
    </activity> 
+0

por día predeterminado seleccionado, no es una buena idea –

0

ir al editor de Android Manifiesto, allí verá MainActivity.java clic en él, a la derecha - verá una nueva ventana: desplazarse hacia abajo y seleccionar seleccione la orientación - "retrato"

1

Do it programáticamente, por ejemplo, en una clase base de actividad

Probé su móvil y tableta en funcionamiento. usa cualquier retrato o paisaje.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    //or 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
} 

manifest.xml dentro tag aplicación

<activity 
     android:name=".Login_Activity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" /> 

o

<activity 
     android:name=".Login_Activity" 
     android:label="@string/app_name" 
     android:screenOrientation="landscape" /> 
0

para manejar los cambios en la orientación, agregar la siguiente línea en AndroidManifest.xml: android:configChanges="orientation|screenSize" bajo <activity> etiqueta como se muestra a continuación: -

<application 
     android:allowBackup="true" 
     ---------- 
     ---------- > 
     <activity android:name=".MainActivity" 
      android:configChanges="orientation|screenSize"> 
     ---------- 
     </activity> 
     ---------- 
    </application> 

Nota: Cada vez que hay un cambio en la configuración tal como orientation, screenLayout, screenSize, etc., la actividad se reinicia y su método onCreate se llama. Para evitar esto, debemos manejar cualquier cambio en la configuración.

Cuestiones relacionadas