animate - Animación 3D Flip en android.support.v4.Fragment
image animation android (3)
En caso de que si no está apoyando debajo de api <3
use el mismo código que se proporciona en: https://stuff.mit.edu/afs/sipb/project/android/docs/training/animation/cardflip.html
Solo modifiqué el método flipCard para:
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();
}
Actualmente estoy leyendo este tutorial:
http://developer.android.com/training/animation/cardflip.html
en animaciones flip de fragmentos . Desafortunadamente, el objeto-animador solo está disponible para android.app.Fragment, y no el fragmento de soporte.
Intenté reconstruir las animaciones .xml usando animaciones de escala y rotación. Pero ahora las animaciones simplemente no se ejecutan, y después del tiempo que he establecido en las animaciones que pasa el archivo .xml, aparece el otro Fragmento, en lugar de voltearlo.
- ¿Simplemente me equivoqué al implementar las animaciones .xml?
- ¿O no es posible hacer una animación de tirón 3D sin animador de objetos?
- ¿O no es posible hacer una animación 3D con el Fragmento de soporte?
Aquí están mis animaciones .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>
Y aquí está el código donde se ejecutan:
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();
Gracias por toda tu ayuda.
Me las arreglé para resolver mi problema. La solución tiene que ver con NineOldAndroids y otra biblioteca con soporte-v4 para NineOldAndroids.
Lo que hice:
- Descargué esta biblioteca: https://github.com/kedzie/Support_v4_NineOldAndroids (esta es una biblioteca de soporte para NineOldAndroids)
- Importado en mi espacio de trabajo
- Descargué la biblioteca NineOldAndroids y la importé a mi área de trabajo
- Importé la biblioteca NineOldAndroids en la biblioteca support-v4
- Importé la biblioteca support-v4-nineoldandroids en mi proyecto
- Hizo la filp-animación
Puedes usar NineOldAndroids . Retrocede la API de animación Honeycomb (Android 3.0) todo el camino de regreso a Android 1.0. Obtendrás ObjectAnimator, ValueAnimator y todas las otras cosas buenas.