Je suis en train de lire ce tutoriel:
http://developer.Android.com/training/animation/cardflip.html
sur retourner les animations de fragments . Malheureusement, le object-animator est uniquement disponible pour Android.app.Fragment, et non le fragment support.
J'ai essayé de reconstruire les animations .xml en utilisant des animations d'échelle et de rotation. Mais maintenant, les animations ne sont tout simplement pas exécutées. au lieu de retourner.
Voici mes animations .xml: Flip_left_in.xml
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<!-- Before rotating, immediately set the alpha to 0. -->
<alpha
Android:valueFrom="1.0"
Android:valueTo="0.0"
Android:propertyName="alpha"
Android:duration="0" />
<!-- Rotate. -->
<rotate
Android:valueFrom="-180"
Android:valueTo="0"
Android:propertyName="rotationY"
Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
Android:duration="800"/>
<!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
<alpha
Android:valueFrom="0.0"
Android:valueTo="1.0"
Android:startOffset="400"
Android:duration="1" />
</set>
flip_left_out.xml
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<!-- Rotate. -->
<rotate
Android:duration="800"
Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
Android:propertyName="rotationY"
Android:valueFrom="0"
Android:valueTo="180" />
<!-- Half-way through the rotation (see startOffset), set the alpha to 0. -->
<alpha
Android:duration="1"
Android:propertyName="alpha"
Android:startOffset="400"
Android:valueFrom="1.0"
Android:valueTo="0.0" />
</set>
flip_right_in.xml
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<!-- Before rotating, immediately set the alpha to 0. -->
<alpha
Android:duration="0"
Android:propertyName="alpha"
Android:valueFrom="1.0"
Android:valueTo="0.0" />
<!-- Rotate. -->
<rotate
Android:duration="800"
Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
Android:propertyName="rotationY"
Android:valueFrom="180"
Android:valueTo="0" />
<!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
<alpha
Android:duration="1"
Android:propertyName="alpha"
Android:startOffset="400"
Android:valueFrom="0.0"
Android:valueTo="1.0" />
</set>
flip_right_out.xml
<set xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<!-- Rotate. -->
<rotate
Android:duration="800"
Android:interpolator="@Android:anim/accelerate_decelerate_interpolator"
Android:propertyName="rotationY"
Android:valueFrom="0"
Android:valueTo="-180" />
<!-- Half-way through the rotation (see startOffset), set the alpha to 0. -->
<alpha
Android:duration="1"
Android:propertyName="alpha"
Android:startOffset="400"
Android:valueFrom="1.0"
Android:valueTo="0.0" />
</set>
Et voici le code où ils sont exécutés:
FragmentTransaction trans = getActivity().getSupportFragmentManager().beginTransaction();
trans.setCustomAnimations(R.anim.flip_right_in, R.anim.flip_right_out,
R.anim.flip_left_in, R.anim.flip_left_out);
trans.addToBackStack(null);
trans.replace(R.id.content_frame, new MyFragment()).commit();
Vous pouvez utiliser NineOldAndroids . Il supporte l'API d'animation Honeycomb (Android 3.0) jusqu'à Android 1.0. Vous obtiendrez ObjectAnimator, ValueAnimator et tous les autres bons trucs.
Merci à tous pour votre aide.
J'ai réussi à résoudre mon problème. La solution concerne NineOldAndroids et une autre bibliothèque avec support-v4 de NineOldAndroids.
Ce que j'ai fait:
Au cas où vous ne soutenez pas ci-dessous api <3
utilisez le même code que celui indiqué dans: https://stuff.mit.edu/afs/sipb/project/Android/docs/training/animation/cardflip.html
vient d’ajuster la méthode flipCard pour:
private void flipCard() {
if (mShowingBack) {
mShowingBack = false;
FragmentTransaction trans = getActivity().getFragmentManager().beginTransaction();
trans.setCustomAnimations(R.animator.card_flip_right_in,
R.animator.card_flip_right_out,
R.animator.card_flip_left_in,
R.animator.card_flip_left_out)
.replace(R.id.memberCardContainer, new CardFrontFragment())
.commit();
return;
}
// Flip to the back.
mShowingBack = true;
FragmentTransaction trans = getActivity().getFragmentManager().beginTransaction();
trans.setCustomAnimations(R.animator.card_flip_right_in,
R.animator.card_flip_right_out,
R.animator.card_flip_left_in,
R.animator.card_flip_left_out)
.replace(R.id.memberCardContainer, new CardBackFragment())
.commit();
}