Android - Animation Personnalisée sur fragment de transaction exécute pas
Je suis à l'aide de l'API Google 8 (Android 2.2) avec support package v4.
Il ne donne pas d'erreur ou de l'animation.
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();
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>
Personne ne sait ce qui se passe ici?
- Les Fragments n'ont pas introduit jusqu'à ce que Nid d'abeille (API 11, Android 3.0). Que pourrait être le problème, mais j'aurais pensé Eclipse vous dira.
- C'est pourquoi je suis à l'aide de la trousse de soutien.
Vous devez vous connecter pour publier un commentaire.
Le gestionnaire a été l'empilement de mon opération avant de mettre de l'animation, de sorte qu'il les piles de la transaction sans animations (triste mais vrai), et que cela se produit même si j'ai valider la transaction après la
setCustomAnimations()
.La solution est de définir les animations d'abord:
transaction.something().somethingelse().replace().commit()
, beaucoup de android méthodes de retourthis
de sorte que vous pouvez éviter de retaper la variable, mais de toute façon ici expose un effet secondaire etsetCustomAnimations()
doit être appelé séparémenttransaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right, R.anim.slide_in_left, R.anim.slide_out_right);
à la place.Comme suggéré ci-dessus, des déclarations distinctes sera certainement le travail. Mais le astuce ici est à
setCustomAnimation
avant de définir le type d'opération à savoir.add
,replace
, etc. autre chose, elle ne le fait pas. Donc, en appliquant la même logique,method chaining
fonctionne également. par exemple.De le mettre ici, de sorte que quelqu'un qui préfère
method chaining
trouve qu'il est utile. Cheers!Laissant ici que c'est la question la plus populaire. J'ai eu le même problème avec le fragment de transaction qui n'est pas l'animation. Le coupable a été d'avoir l'attribut
android:animateLayoutChanges
ensemble detrue
dans le contenant de la mise en page.J'espère que cela aide quelqu'un de gagner du temps à la recherche d'une solution car il peut être difficile d'avoir imbriqués les mises en page dans des fichiers différents.
Une autre raison peut être inutilement placer
fragmentTransaction.show()
avant de s'engager. Cela fait pop des transitions pas sur certaines API android versions.