animate android android-fragments android-animation page-flipping

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.