android - pie - ¿Deshabilitar la animación deslizante de actividad cuando se inicia una nueva actividad?
android versiones (9)
Tengo una actividad que inicia otra actividad, mediante un clic de botón. De forma predeterminada, en las versiones más recientes del sistema operativo de Android, el sistema operativo animará la nueva actividad deslizándose de derecha a izquierda.
¿Hay alguna manera de desactivar esta animación? Solo quiero que la nueva actividad aparezca sin ningún tipo de animación.
Aplicar
startActivity(new Intent(FirstActivity.this,SecondActivity.class));
entonces
overridePendingTransition(0, 0);
Esto detendrá la animación.
En mi humilde opinión, this respuesta aquí resuelve el problema de la manera más elegante.
El desarrollador debe crear un estilo ,
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
luego, en manifiesto, establézcalo como tema de actividad o aplicación completa.
<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
Voila! Bonito y fácil..
Créditos ps para el autor original por favor ..
En mi opinión, la mejor respuesta es usar "overridePendingTransition(0, 0);"
para evitar ver la animación cuando desee usar Intent
de una Activity
:
this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
y para no ver la animación cuando presiona el botón onPause
método onPause
en su newactivity
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
Esto funciona para mí al deshabilitar terminar la animación de la actividad.
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
Estoy en 4.4.2, y al llamar a overridePendingTransition (0, 0) en onCreate () de la actividad de inicio deshabilitaré la animación de inicio (llamar a overridePendingTransition (0, 0) inmediatamente después de que startActivity () NO funcionó). Como se indicó en otra respuesta, al anular la Transición de publicación (0, 0) después de finalizar () se desactiva la animación de cierre.
Por cierto, encontré que establecer el estilo con "android: windowAnimationStyle"> @ null (otra respuesta mencionada aquí) causó un bloqueo cuando mi actividad de lanzamiento intentó establecer el título de la barra de acciones. Depurando aún más, descubrí que de alguna manera esto hace que window.hasFeature (Window.FEATURE_ACTION_BAR) falle en la Activity initActionBar ().
FLAG_ACTIVITY_NO_ANIMATION puede funcionar, pero no me funcionaba bien cuando se combina con FLAG_ACTIVITY_CLEAR_TASK y FLAG_ACTIVITY_NEW_TASK. Aparentemente veo la animación para crear una nueva tarea con una pila de actividades nueva mientras navego lateralmente a mis otras vistas de nivel superior.
Lo que funcionó aquí fue llamar "overridePendingTransition (0, 0);" inmediatamente después de mi llamada startActivity () o onPause (). Ambas formas funcionaron, pero hacerlo después de startActivity () me da un poco más de control sobre cuándo quiero animaciones y cuándo no.
Solo especifique el indicador Intent.FLAG_ACTIVITY_NO_ANIMATION
cuando comience
Tuve un problema similar al aparecer una pantalla negra en la transición deslizante de una actividad a otra usando la transición de sobrescritura. y seguí el camino de abajo y funcionó
1) creó un noanim.xml en la carpeta anim
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="0%p"
/>
y usado
overridePendingTransition(R.drawable.lefttorightanim, R.anim.noanim);
el primer parámetro como mi animación original y el segundo parámetro que es la animación de salida como mi animación ficticia
El indicador FLAG_ACTIVITY_NO_ANIMATION
funciona bien para deshabilitar la animación al iniciar actividades.
Para deshabilitar la animación similar que se desencadena al llamar a finish()
en una actividad, es decir, la animación se desliza de derecha a izquierda, puede llamar a overridePendingTransition(0, 0)
después de llamar a finish()
y se excluirá la siguiente animación.
Esto también funciona en la animación startActivity(...)
si llama a overridePendingTransition(0, 0)
después de llamar a startActivity(...)
.