Cómo evitar reiniciar la actividad cuando cambia la orientación en Android
Estoy creando una aplicación para Android en la que estoy dibujando una vista en un lienzo. Cuando la orientación del dispositivo cambia, la actividad se reinicia. No quiero que lo haga.
¿Cómo puedo evitar reiniciar la actividad cuando cambia la orientación?
- Bloqueo de orientación de la pantalla
- Las vistas de Disposición de Android giradas y espaciadas alrededor de un círculo?
- Rotar imagen junto con toque para fijar punto en android
- Texto de vista de texto de android en dirección vertical
- Sprite Rotación en Android con Canvas.DrawBitmap. Estoy cerca, ¿qué estoy haciendo mal?
- Cómo girar una vista en Android
- Fragmentos y problemas con la pantalla giratoria
- Lienzo dirección drawtext
- Rotar una imagen varias veces pero mantener las esquinas alineadas
- Obtener rotación y mostrar en grados
- Rotar marcador / icono de coche en google maps - Android
- Android: los mapas de bits cargados desde la galería se giran en ImageView
- Obtener información de rotación automática en Android
Hay varias formas de hacerlo, pero tal como se
android:configChanges="keyboardHidden|orientation|screenSize"
Como usted necesita, le permite escuchar en su lugar para los cambios de configuración. A continuación, responde a estos cambios anulando onConfigurationChanged
y llamando a setContentView
.
Esta es la forma en que lo he estado haciendo, pero me interesaría conocer los pensamientos de otras personas.
Defina su actividad en el AndroidManifest.xml de esta manera:
<activity android:name="com.name.SampleActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:icon="@drawable/sample_icon" android:label="@string/sample_title" android:screenOrientation="portrait" > </activity>
Compruebe en su archivo de manifiesto android que ha escrito android:configChanges="orientation"
en la actividad ..
Yo recomendaría el uso de Fragmentos. Simplemente puede utilizar setRetainInstance(true)
para notificar que desea conservar su fragmento.
Añadir android:configChanges="keyboardHidden|orientation"
a su activity
Para los usuarios de xamarin,
Para evitar que la aplicación reinicie el cambio de orientación en Android, agregue
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize
ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize
al atributo Activity de todas las clases de Activity. Por ejemplo, a continuación se muestra mi código de demostración
[Activity(Label = "DemoApp", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity { protected override void OnCreate(Bundle bundle) { //Some code here } }
Cómo evitar el cambio de orientación en Android?
Siga la guía de la API de Android: Gestión de cambios en tiempo de ejecución
Uso de la clase de aplicación: reinicio de la actividad en la rotación de Android
Añada esto a todas sus actividades en el manifiesto.
android:configChanges="orientation|screenSize"
Ejemplo:
<activity android:name=".activity.ViewActivity" android:label="@string/app_name" android:configChanges="orientation|screenSize"/>
Intento escribir android:configChanges="keyboardHidden|orientation|screenSize"
en la etiqueta de la actividad, pero en no funciona.
Intento muchos métodos y nada funciona hasta que agregué android:configChanges="keyboardHidden|orientation|screenSize"
para todas las actividades de la aplicación y funciona perfectamente.
Sólo tienes que añadir android: configChanges = "keyboardHidden | orientation | screenSize" para todas las actividades de la aplicación en el archivo de manifiesto
- ¿Cuál es la diferencia entre "? Android:" y "@android:" en un archivo xml de diseño de Android?
- Alineación del diseño relativo de Android