36 votes

Faire apparaître la nouvelle activité derrière l'ancienne pendant la transition

Ce que je suis en train de réaliser est de remplacer le début de l'activité d'animation.

L'animation doit donner l'impression que l'ancienne activité est en haut de la nouvelle activité, puis glisse vers le bas et hors de l'écran pour révéler la nouvelle activité. J'ai essayé de plusieurs façons telles que l'utilisation d' overridePendingTransition(startAnim, exitAnim) Mais le problème est qu'ils animés de la même timeline. Donc, overridePendingTransition(R.anim.hold, R.anim.exit_slide_down); Vous ne voyez jamais la sortie d'animation, car la nouvelle activité est sur le dessus. Cela peut être réalisé en utilisant le cadre?

enter image description here

31voto

johncc Points 493

En fait, j'ai trouvé une propriété appelée android:zAdjustment dans les fichiers d'animation.

Si je mets android:zAdjustment="bottom" en hold.xml (écran 2) et android:zAdjustment="top" en push_down_out.xml (écran 1), je peux obtenir l'effet souhaité.

Cela évite le problème de l'ordre z (j'ai supposé que c'était un problème de minutage d'animation, donc je me suis trompé d'arborescence).

John

30voto

Romain Piel Points 4269

J'ai essayé de résoudre votre solution dans un exemple de projet et je l'ai utilisée avec ce code:

Appelez l'animation avec:

 startActivity(new Intent(this, Activity2.class));
overridePendingTransition(R.anim.push_down_in,R.anim.push_down_out);
 

R.anim.push_down_in:

 <?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android">  
  <translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="300"/>
</set>  
 

R.anim.push_down_out:

 <?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android">  
  <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="300"/>
</set>  
 

7voto

Lukasz R. Points 1058

La solution qui fonctionne pour moi:

R.anim.exit_slide_down

 <set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:zAdjustment="top">  

    <translate android:fromYDelta="0" 
               android:toYDelta="100%p" 
               android:duration="600" />
</set>
 

...puis

 Intent intent = new Intent(activity, SecondActivity.class);
startActivity(intent);
activity.overridePendingTransition(0, R.anim.exit_slide_down);
 

0voto

NagarjunaReddy Points 3638

0voto

Martin Christmann Points 1098

Il existe déjà une question similaire sur Stackoverflow. Peut-être que cela vous aide:

Puis-je modifier l'animation de transition Android startActivity ()?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X