Mirando el AndroidManifest.xml ( enlace ), en la línea 9:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
Esta línea especifica el screenOrientation
paisaje, pero el autor va más allá al anular cualquier cambio de orientación de la pantalla configChanges="orientation|keyboardHidden"
. Esto apunta a una función anulada en VncCanvasActivity.java.
Si observa VncCanvasActivity, en la línea 109 se encuentra la función anulada:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
El autor específicamente puso un comentario para ignorar cualquier cambio de teclado u orientación.
Si desea cambiar esto, puede volver al archivo AndroidManifest.xml que se muestra arriba y cambiar la línea a:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
Esto debería cambiar el programa para cambiar de vertical a horizontal cuando el usuario gira el dispositivo.
Esto puede funcionar, pero puede estropear la apariencia de la GUI, dependiendo de cómo se creó el diseño. Tendrás que dar cuenta de eso. Además, dependiendo de cómo se codifiquen las actividades, puede observar que cuando se cambia la orientación de la pantalla, los valores que se completaron en cualquier cuadro de entrada desaparecen. Esto también puede tener que ser manejado.
configChanges
necesita exactamente el atributo? Parece funcionar en mi teléfono sin teclado sin él ... ¿En qué situaciones la orientación cambiará a vertical siscreenOrientation="landscape"
omite elconfigChanges
?If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
También puede establecer los mismos datos en su código Java.
Otros valores en ActivityInfo le permitirán volver a configurarlo en retrato controlado por sensor o bloqueado. Personalmente, me gusta configurarlo en algo en el Manifiesto como se sugiere en otra respuesta a esta pregunta y luego cambiarlo más tarde usando la llamada anterior en el SDK de Android si es necesario.
fuente
If the activity is currently in the foreground or otherwise impacting the screen orientation, the screen will immediately be changed (possibly causing the activity to be restarted)
En mi
OnCreate(Bundle)
, generalmente hago lo siguiente:fuente
Puede especificar la orientación de una actividad en el manifiesto. Ver aquí .
fuente
En el manifiesto:
En tu actividad:
fuente
El siguiente es el código que usé para mostrar toda la actividad en modo horizontal:
fuente
Una solución rápida y simple es para el archivo AndroidManifest.xml, agregue lo siguiente para cada actividad que desee forzar al modo horizontal:
fuente
Esto funciona para Xamarin.Android. En OnCreate ()
fuente
¡¡Eso es!! Mucho tiempo esperando esta solución.
Tengo un viejo problema de Android sobre el inicio doble de una actividad que requería el modo horizontal (mediante programación):
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
Ahora Android hace el modo horizontal al inicio.
fuente
Arslan, ¿por qué quieres forzar la orientación programáticamente, aunque ya hay una forma en manifiesto?
<activity android:name=".youractivityName" android:screenOrientation="portrait" />
fuente
Hacerlo en código es IMO incorrecto y aún más si lo pones en onCreate. Hágalo en el manifiesto y el "sistema" conoce la orientación desde el inicio de la aplicación. Y este tipo de meta o "guía" de nivel superior DEBE estar en el manifiesto. Si quieres demostrarlo a ti mismo, establece un descanso en la actividad onCreate. Si lo hace en código allí, se llamará dos veces: se inicia en modo vertical y luego se cambia a horizontal. Esto no sucede si lo haces en el manifiesto.
fuente
Para Android 4.0 (Ice Cream Sandwich) y posterior, necesitaba agregar estos, además del
landscape
valor.Usar solo
keyboardHidden|orientation
aún provocaría pérdidas de memoria y recreación de mis actividades al presionar el botón de encendido.fuente
orientation|screensize
no era suficiente en todos los casos. Volvería a girar automáticamente al retrato.Use ActivityInfo (android.content.pm.ActivityInfo) en su método onCreate antes de llamar al método setLayout de esta manera
fuente
use solo
herramientas android: screenOrientation = "portrait": ignore = "LockedOrientationActivity"
fuente
Agregar las siguientes líneas en la actividad
Necesitas ingresar en cada actividad
para el paisaje
para retrato
Aquí el ejemplo de MainActivity
fuente
Presione
CTRL+F11
para girar la pantalla.fuente