rotacion - manejando la rotación de pantalla en android studio
Cómo evitar el reinicio de la actividad cuando la orientación cambia en Android (11)
Estoy creando una aplicación de 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?
Agrega android:configChanges="keyboardHidden|orientation"
a tu activity
Agregue 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"/>
Compruebe en su archivo de manifiesto de Android que ha escrito android:configChanges="orientation"
en la actividad ..
Declara esto en tu AndroidManifest.xml
<activity android:name=".complex_examples.VideoPlayerActivity"
android:configChanges="keyboard|keyboardHidden|orientation
|screenSize|screenLayout|smallestScreenSize|uiMode"
android:launchMode="singleTop"/>
Pero tenga cuidado , la documentación para desarrolladores de Android dice que debe hacerlo solo si no le quedan mejores opciones.
Nota: El uso de este atributo debe evitarse y utilizarse solo como último recurso. Lea la sección Manejo de los cambios de tiempo de ejecución para obtener más información sobre cómo manejar adecuadamente un reinicio debido a un cambio en la configuración.
Si está seguro de hacerlo, puede manejar los cambios de configuración usted mismo en el onConfigurationChanged() .
Define tu actividad en AndroidManifest.xml de la siguiente 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>
Hay varias maneras de hacerlo, pero como se indica here , usando
android:configChanges="keyboardHidden|orientation|screenSize"
como lo necesite, le permite escuchar los cambios de configuración. A continuación, responde a estos cambios sobrescribiendo onConfigurationChanged
y llamando a setContentView
.
Esta es la forma en que lo he estado haciendo, pero me gustaría conocer los pensamientos de otras personas.
PARA evitar reiniciar en keyboardHidden|orientation
- ¿Cómo desactivar el cambio de orientación en Android?
Siga la guía de API de Android - Manejo de cambios de tiempo de ejecución
Uso de la clase de aplicación: here
Para los usuarios de xamarin,
Para evitar el reinicio de la aplicación en 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 actividad. Por ejemplo, a continuación está 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
}
}
Traté de escribir android:configChanges="keyboardHidden|orientation|screenSize"
en la etiqueta de actividad pero no funciona.
android:configChanges="keyboardHidden|orientation|screenSize"
muchos métodos pero nada funciona hasta que agregué android:configChanges="keyboardHidden|orientation|screenSize"
para todas las actividades de la aplicación y funciona perfectamente.
Yo recomendaría usar Fragmentos. Simplemente puede usar setRetainInstance(true)
para notificar que desea conservar su fragmento.
simplemente agregue android: configChanges = "keyboardHidden | orientation | screenSize" para todas las actividades de la aplicación en el archivo de manifiesto