85 votes

Android - Animation personnalisée sur une transaction de fragment non exécutée

J'utilise Google API 8 (Android 2.2) avec le package de support technique v4.

Cela ne me donne aucune erreur et aucune animation aussi.

Ceci est mon code pour la transaction:

 FragmentTransaction transaction = manager.beginTransaction();       
transaction.replace(R.id.content, myFragment);
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.commit();
 

Et ce sont mes animations:

slide_in_left.xml

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

slide_out_right.xml

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

Est-ce que quelqu'un sait ce qui se passe ici?

263voto

adheus Points 1173

J'ai résolu ce problème moi-même. Le gestionnaire empilait ma transaction avant de définir l'animation. Il empile donc la transaction sans animations (triste mais vrai), et cela se produit même si je valide la transaction après la méthode setCustom ().

La solution consiste à définir les animations en premier:

 FragmentTransaction transaction = manager.beginTransaction();       
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.replace(R.id.content, myFragment);
transaction.commit();
 

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