2010-08-18 11 views

Respuesta

33

En la misma declaración en la que se ejecuta acabado(), ejecuta la animación allí también. Luego, en la nueva actividad, ejecuta otra animación. Ver este código:

fadein.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true"> 
    <alpha android:fromAlpha="1.0" 
      android:toAlpha="0.0" 
      android:duration="500"/> //Time in milliseconds 
</set> 

En su clase de acabado

private void finishTask() { 
    if(blabbla==blablabla){ 
     finish(); 
     runFadeAnimation(); 
    } 
} 

private void runFadeInAnimation() { 
    Animation a = AnimationUtils.loadAnimation(this, R.anim.fadein); 
    a.reset(); 
    LinearLayout ll = (LinearLayout) findViewById(R.id.yourviewhere); 
    ll.clearAnimation(); 
    ll.startAnimation(a); 
} 

fadeout.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" 
      android:fillAfter="true"> 
    <alpha android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:duration="500"/> 
</set> 

En su nueva clase de actividad se crea un similiar método como el runFadeAnimation que escribí y luego lo ejecuta en crear y no se olvide de cambiar los recursos id a fadeou t.

+1

Además, puede ser mejor utilizar el tiempo de animación corto predeterminado: '' 'android: duration =" @ android: integer/config_shortAnimTime "' '' – elimirks

+0

donde está 'runFadeAnimation()' – Choletski

+0

Chicos, por favor asegúrese de ver la respuesta real debajo de esta publicación. –

28

Ver temas en android: http://developer.android.com/guide/topics/ui/themes.html.

Debajo de themes.xml debe haber donde puede ver la declaración del estilo en styles.xml.

Ejemplo aplicación:

<style name="AppTheme" parent="..."> 

    ... 

    <item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item> 

</style> 

<style name="WindowAnimationStyle"> 
    <item name="android:windowEnterAnimation">@android:anim/fade_in</item> 
    <item name="android:windowExitAnimation">@android:anim/fade_out</item> 
</style> 
+1

http://www.maxters.net/2011/05/android- animation-between-activity-switching-using-theme/ –

+0

Actualizar enlaces para themes.xml y styles.xml https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res /res/values/themes.xml https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml – vovahost

251

A partir de API de nivel 5 puede llamar overridePendingTransition inmediatamente para especificar una animación de transición explícita:

startActivity(); 
overridePendingTransition(R.anim.hold, R.anim.fade_in); 

o

finish(); 
overridePendingTransition(R.anim.hold, R.anim.fade_out); 
+13

añadir algo como: \t @ Override \t public void onBackPressed() { \t \t super.onBackPressed(); overridePendingTransition (R.anim.hold, R.anim.fade_out); \t} para agregar animaciones. – RightHandedMonkey

+1

¿debería funcionar con 'startActivityForResult()'? –

+0

Esta debería ser la mejor respuesta limpia. – cy198706

3

Usted puede simplemente crear un contexto y hacer algo, como a continuación: -

private Context context = this; 

Y su animación: -

((Activity) context).overridePendingTransition(R.anim.abc_slide_in_bottom,R.anim.abc_slide_out_bottom); 

Puede usar cualquier animación que desee.

8

Uso overridePendingTransition

startActivity(); 
overridePendingTransition(R.anim.fadein, R.anim.fadeout); 

fadein.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" /> 
</set> 

fadeout.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/anticipate_interpolator" 
     android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" /> 
</set> 
+1

Usted es hermoso gracias. Funciona bien – Sam

3

Para fadeIn y fadeOut, sólo se suman esto después de super.onCreate (savedInstanceState) en su nueva clase de actividad. No es necesario crear algo más (sin XML, sin carpeta anim, sin función adicional).

overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out); 
Cuestiones relacionadas