android - samsung - porque no gira la pantalla de mi celular
¿Cómo hacer que una aplicación ignore la orientación de la pantalla cambia? (7)
Agregue esto a la actividad:
android:configChanges="orientation|screenSize"
¿Hay alguna manera de hacer que una aplicación ignore por completo un cambio en la orientación de la pantalla?
Desea leer la orientación actual y mantenerla así a lo largo de toda la vida de la actividad, así que lo que hice fue lo siguiente, al final de onCreate:
// choose an orientation and stay in it
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Es posible, bastante fácilmente, anular el comportamiento predeterminado y prohibir que cambie la orientación de la pantalla cuando el teclado está abierto / cerrado.
Modificando el manifiesto
Abra el manifiesto, cambie a la pestaña Aplicación y seleccione la Actividad deseada que desea anular para el comportamiento de cambio de orientación.
Dentro de los atributos, debe cambiar dos campos: Orientación de la pantalla: seleccione retrato o paisaje, cualquiera que sea el que desee. Este será el diseño predeterminado.
Seleccione eventos para cambios de configuración que desee anular: en este caso, estos son keyboardHidden y orientación.
Modificando la implementación de la actividad
Ahora necesita anular una sola función dentro de la Actividad deseada.
Solo agrega la función a continuación a la clase de tu Actividad.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
Esta es la implementación predeterminada si se utiliza la opción de menú Source->Override/Implement Methods
.
¡Eso es! Ahora su orientación siempre se mantendrá.
Recuerde que esta configuración es por actividad, por lo que debe repetir este paso para cada actividad en la que desee prohibir el cambio de orientación.
(Basado en SDK 1.1)
Puede definir su actividad en el archivo AndroidManifest.xml
la siguiente manera:
<activity
android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|keyboard"/>`
En este caso, debe establecer la propiedad para cada actividad. No encontré una solución en línea para todas las aplicaciones.
Puede hacer el mismo cambio en el código con la siguiente línea (llamada en una actividad):
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Una vez que realice esta llamada, su aplicación permanecerá en modo horizontal (o vertical). Puede usar la misma llamada (con una enumeración ActivityInfo diferente) para que sea sensible a la orientación cambiando de nuevo.
Hay un artículo completo de DevX sobre el tema en Desarrollo de aplicaciones Android orientadas a la orientación .
(ADVERTENCIA: desde que publiqué este enlace, DevX colocó un muro de registro).
Si configura mediante AndroidManifest.xml
o con setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Te vas a encontrar con problemas con las tabletas . Su orientación natural / predeterminada es el paisaje.
Si realmente quiere ignorar completamente los cambios de orientación de la pantalla , usaría este setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
valor. Hablo más sobre esto en la pregunta de . Ayuda con la orientación del sensor natural de Android .
Aquí está el xml:
<activity
android:name=".MyActivity"
android:screenOrientation="nosensor"
android:configChanges="orientation|keyboardHidden|keyboard"/>
<activity android:screenOrientation="portrait"></activity>