“Unknown animation name: objectAnimator” Establecer una animación para la transición entre Fragments en Android sin morir en el intento.

Es habitual el uso de la clase Fragment cuando desarrollamos aplicaciones móviles Android. Los Fragments nos permiten la reutilización de código ya que pueden verse como una parte de la interfaz de usuario reutilizable en varias actividades. Es decir, podemos decir que la interfaz de usuario de una actividad está compuesta de varios fragments pero que a su vez, éstos fragments, tienen su propio ciclo de vida en el sistema operativo Android.

Una vez conocemos las bondades del uso de fragments en Android y la versatilidad que  proporcionan al desarrollo de aplicaciones móviles, la tendencia será agrupar estos fragments para crear interfaces de usuario más modulares y atractivas. Además de ayudarnos en su estructuración.

Para hacer más atractiva la UI, podemos recurrir al uso de animaciones para realizar transiciones. Tan solo tenemos que definir la animación en ficheros de tipo xml localizados en la carpeta res/animator y establecer la animación en la transición:

.beginTransaction()
.setCustomAnimations(
R.animator.animacion_derecha_in, R.animator.animacion_derecha_out,
R.animator.animacion_ izquierda_in,
R.animator.animacion_izquierda _out)
.replace(R.id.container, new miFragment())
.commit();

Es una tarea sencilla pero que si no prestamos toda nuestra atención puede resultar tediosa debido al error “Unknown animation name: objectAnimator”.

Este error se debe a que probablemente estemos usando la librería de compatibilidad para Android en nuestro proyecto y los Fragments declarados pertenecerán a la clase android.support.v4.app.Fragment. La librería de compatibilidad Android usa animaciones de tipo Tween Animation que realizan movimiento de los objetos View y no es compatible con las animaciones de tipo Property Animation que modifican los valores de las propiedades del objeto.

Es decir, que si usas la librería de compatibilidad (puedes saberlo si haces uso de getSupportFragmentManager() ) los ficheros que definen la animación en la transición de Fragments deben ser construidos como Tween Animation y no como Property Animation. Otra opción es renunciar al uso de la librería de compatibilidad y usar directamente android.app.Fragment y hacer uso de getFragmentManager()

A continuación presentamos dos ejemplos de animaciones en Android, una de cada tipo de las que hemos hablado:

Property Animation

<set
  android:ordering=["together" | "sequentially"]>

    <objectAnimator
        android:propertyName="string"
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <animator
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <set>
        ...
    </set>
</set>
¿Te ha gustado el artículo?
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 1,00 sobre 5)
Loading...
Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *



Aún no hay comentarios en esta entrada. ¿Te animas?