¿Hay alguna manera de hacer que una aplicación ignore completamente un cambio en la orientación de la pantalla?¿Cómo hacer que una aplicación ignore el cambio de orientación de la pantalla?
Respuesta
Es posible, con bastante facilidad, anular el comportamiento predeterminado y prohibir que cambie la orientación de la pantalla cuando el teclado está abierto/cerrado.
Modificar el manifiesto
Abrir el manifiesto, cambie a la pestaña de aplicaciones y seleccione la actividad deseada que desea anular el comportamiento de cambio de orientación.
atributos dentro necesita cambiar dos campos: orientación pantalla: Seleccione ya sea vertical u horizontal - cualquiera que se desee. Este será el diseño predeterminado.
Seleccione eventos para los cambios de configuración que desea anular: En este caso, estos son keyboardHidden y orientación.
Modificación de la aplicación Actividad
Ahora tiene que anular una sola función dentro de la actividad deseada.
Solo agregue la siguiente función a la clase de su actividad.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
Esta es la aplicación por defecto si se utiliza la opción de menú Source->Override/Implement Methods
.
Eso es todo! 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)
¿El simple hecho de llamar a la superclase no cambia nada? – Matthias
Bueno ... Acabo de dar una receta que me funciona. –
Estaba jugando con algo muy similar, creo que los cambios en el archivo Manifest son suficientes, al menos lo fueron para mí (lo que parece lógico, como señaló Matthias). –
Puede realizar el mismo cambio en el código con la siguiente línea (llamada en una actividad):
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Una vez que haga esta llamada, la aplicación se mantendrá en modo de paisaje (o retrato). 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 Developing Orientation-Aware Android Applications.
(ADVERTENCIA:. Desde que he publicado este enlace DevX ha puesto una pared de registro)
Esta es la única respuesta que funcionó para mí con Android 2.2. ¡Gracias! –
puede definir su actividad en el archivo AndroidManifest.xml
así:
<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.
Si va a configurar ya sea por AndroidManifest.xml
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
o con el que se va a ejecutar en problemas con tabletas. Su orientación natural/predeterminada es el paisaje.
Si realmente quiere ignorar por completo la orientación de la pantalla cambia me gustaría utilizar este valor setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
. Hablo más sobre esto en Stack Pregunta de desbordamiento Android natural sensor orientation help.
Aquí es el xml:
<activity
android:name=".MyActivity"
android:screenOrientation="nosensor"
android:configChanges="orientation|keyboardHidden|keyboard"/>
Esto no girará la pantalla. –
No estoy seguro de seguir ... Ese es el punto, para evitar girar la pantalla. – bytebender
"ignorar completamente los cambios de orientación de la pantalla" significa que cuando se gira, los datos permanecerán iguales. –
<activity android:screenOrientation="portrait"></activity>
¿Quieres leer la orientación actual y mantener de esta manera a lo largo de toda la vida de la actividad, por lo que lo que hice es la 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);
añadir esto a la actividad:
android:configChanges="orientation|screenSize"
- 1. ¿Cómo hacer que una aplicación swing sea consciente del cambio en el tamaño de la pantalla?
- 2. Orientación de pantalla de cambio - Android 3.2 en VirtualBox
- 3. aplicación se bloqueaba al cambio de orientación
- 4. Problemas del teclado que surgen en el cambio de orientación
- 5. UIPopOver y cambio de orientación
- 6. ¿Prevenir cambio de orientación de Live Wallpaper cuando se abre una aplicación y se cambia la orientación?
- 7. ¿Cómo hacer que el analizador de Ruby JSON ignore json_class?
- 8. ¿Cómo hacer que javascript ignore el carácter de escape (\)?
- 9. orientación de bloqueo de pantalla (Android)
- 10. Android: ocuparse de un diálogo en la orientación Cambio de la pantalla
- 11. Cambiando UIView en el cambio de orientación
- 12. Cómo hacer que MPMoviePlayerController ignore el interruptor de silencio
- 13. ¿Cómo hacer que Hibernate ignore un método?
- 14. ¿Cómo ajustar a la pantalla después de cambiar el ancho de la ventana gráfica en el cambio de orientación?
- 15. cargador se reinicia el cambio de orientación
- 16. orientación de la pantalla Android al sensor
- 17. ¿Cómo puedo hacer que mi Cursor sobreviva a un cambio de orientación?
- 18. ¿Qué puede hacer que CGDisplayCreateImageForRect capture o ignore el cursor?
- 19. Descartar de diálogo después del cambio de orientación de la pantalla
- 20. ¿Cómo hacer que git ignore los cambios en el caso?
- 21. ¿Cómo restablezco la escala/el zoom de una aplicación web en un cambio de orientación en el iPhone?
- 22. Cómo controlar la orientación de la pantalla para iPhone en la aplicación web
- 23. Android VideoView, reproducción sin interrupciones durante el cambio de orientación
- 24. android obtener el tamaño de la pantalla de la otra orientación de la pantalla
- 25. ¿Puedo hacer que git diff ignore los cambios de permisos?
- 26. ¿Cómo hacer una pantalla de bienvenida (pantalla visible cuando se inicia la aplicación)?
- 27. Método desencadenado por el cambio en la orientación
- 28. Hacer que Emacs ignore el diseño del teclado del sistema
- 29. ¿Cómo emulo el cambio de orientación de mi dispositivo Android?
- 30. Fragmentos que no funcionan correctamente después del cambio de orientación
Solo una nota que aparentemente en Android 1.5 hay un error. Si usa un tamaño de pantalla personalizado (por ejemplo, 800x480, como en el Apad) y lo fuerza al paisaje (ya sea a través de XML o del código), entonces estará de hecho en retrato. – Dornbi
Puede llamar a 'Screen.lockOrientation (this)' desde https://github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/delight/android/baselib/Screen.java si Desea bloquear y desbloquear la orientación del código (que es más flexible) – caw