2010-02-18 39 views
96

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.¿Deshabilitar la actividad de la actividad de inserción cuando se inicia una nueva actividad?

¿Hay alguna manera de deshabilitar esta animación? Solo quiero que la nueva actividad aparezca sin ningún tipo de animación.

Respuesta

15

Sólo especifique Intent.FLAG_ACTIVITY_NO_ANIMATION bandera al iniciar

154

La bandera FLAG_ACTIVITY_NO_ANIMATION funciona bien para desactivar la animación al iniciar las actividades.

Para desactivar la animación similar que se activa cuando se llama a finish() en una actividad, es decir las diapositivas de animación de derecha a izquierda en lugar, puede llamar overridePendingTransition(0, 0) después de llamar finish() y será excluido de la siguiente animación.

Esto también funciona en la animación interna si llama al overridePendingTransition(0, 0) después de llamar al startActivity(...).

+8

Tenga en cuenta que ' FLAG_ACTIVITY_NO_ANIMATION' y 'overridePendingTransition' son solo API Level 5+. – azdev

+0

Esto no ayuda al regresar de una actividad en la tecla Atrás. – Yar

+1

verifique mi respuesta. – Ewoks

123

mi humilde opinión this responder aquí solucionar problema de la forma más elegante ..

desarrollador debe crear un estilo ,

<style name="noAnimTheme" parent="android:Theme"> 
    <item name="android:windowAnimationStyle">@null</item> 
</style> 

continuación en conjunto manifiesta como tema para la actividad o la aplicación entera .

<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme"> 
</activity> 

Voila! Agradable y fácil ..

p.s. créditos al autor original por favor ..

+1

esto es mucho más elegante –

+0

¿Esto funciona para la actividad Back también? –

+1

yeap, funciona ...;) Espero que lo encuentres útil ... Cheers – Ewoks

17

aplican

startActivity(new Intent(FirstActivity.this,SecondActivity.class)); 

continuación

overridePendingTransition(0, 0); 

Esto detendrá la animación.

8

Esto funciona para mí al deshabilitar terminar la animación de la actividad.

@Override 
protected void onPause() { 
    super.onPause(); 
    overridePendingTransition(0, 0); 
} 
8

estoy en 4.4.2, y llamando overridePendingTransition (0, 0) en onCreate de la actividad de lanzamiento() desactivará la animación a partir (llamando overridePendingTransition (0, 0) inmediatamente después de 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.

Btw, 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().

+1

¿qué tal onresume? actividades únicas y todo eso. –

7

FLAG_ACTIVITY_NO_ANIMATION puede funcionar, pero no estaba funcionando 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.

-1

Tuve un problema similar al aparecer una pantalla negra en la transición deslizante de una actividad a otra usando overridependingtransition. y he seguido a continuación la forma y funcionó

1) creado 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 se utiliza

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

11

En mi opinión, la mejor respuesta es usar "overridePendingTransition(0, 0);"

para no ver la animación cuando se quiere Intent a un Activity uso:

this.startActivity(new Intent(v.getContext(), newactivity.class)); 
this.overridePendingTransition(0, 0); 

y no ver la animación cuando se pulsa el botón atrás de anulación método en su newactivity

@Override 
protected void onPause() { 
    super.onPause(); 
    overridePendingTransition(0, 0); 
} 
Cuestiones relacionadas