Recursos esperados del tipo animator

He actualizado mi SDK a la versión más reciente, pero ahora estoy recibiendo un error de pelusa.

Error: recurso esperado del tipo animator [ResourceType]

El error se produce en esta línea:

AnimatorInflater.loadAnimator(context, R.anim.right_slide_in) 

El recurso referenciado /res/anim/right_slide_in.xml tiene este aspecto:

 <?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator" android:valueTo="0" android:valueFrom="1.0" android:propertyName="xFraction" android:valueType="floatType" android:duration="450" /> 

Siempre funcionaba antes. ¿Podría alguien explicar por qué estoy recibiendo ese error?

El error se produce porque almacena los recursos de Animator en el directorio incorrecto. Funcionó antes porque el AnimatorInflater puede cargar el xml independientemente de en qué carpeta se guarda.

  • R.anim.* recursos de la carpeta res/anim/ son para ver animaciones.
  • R.animator.* recursos de la carpeta /res/animator/ son para Animators .

Así que para corregir el error simplemente mueva sus recursos de Animator de /res/anim/ to /res/animator/ .


Esto no hacía ninguna diferencia en absoluto hasta que las anotaciones de tipo de recurso se agregaron a la biblioteca de soporte. Un largo con esas anotaciones allí también eran muchos cheques nuevos de la pelusa entre otros el que le tropezó.

En el futuro, si recibe un error como este, puede ver la anotación para averiguar qué está haciendo mal. Por ejemplo, la implementación de loadAnimator() de AnimatorInflater ve así:

 public static Animator loadAnimator(Context context, @AnimatorRes int id) throws NotFoundException { return loadAnimator(context.getResources(), context.getTheme(), id); } 

La anotación @AnimatorRes en el parámetro id indica que sólo los recursos de Animator deben pasar aquí. Si miras la documentación de @AnimatorRes se lee así:

Indica que se espera que un valor de retorno de parámetro, campo o método de número entero sea una referencia de recurso de animador (por ejemplo, android.R.animator.fade_in).

Si la descripción ya no explica el error, entonces normalmente lo hace el ejemplo;)

Sólo para resumir la solución.

Por ejemplo: blink.xml

  <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:interpolator="@android:anim/accelerate_interpolator" android:duration="600" android:repeatMode="reverse" android:repeatCount="infinite"/> </set> 

Debe estar en el directorio res / anim

Y debe ser el acceso como R.anim.blink en su archivo java

  • Advertencias en los recursos xml
  • Android Lint informe para mi proyecto sólo, excluyendo los proyectos de la biblioteca?
  • Lint se queja de que no se ha traducido la cadena gcm_defaultSenderId
  • @IntDef anotación y devolver valor de otro código que no se puede anotar o cómo desactivar temporalmente la anotación de afectar el código?
  • Escribir advertencia de pelusa personalizada para comprobar anotaciones personalizadas
  • Mostrar los resultados de Android Lint en Jenkins
  • ¿Cómo configuramos Android Studio para ejecutar su pelusa en cada compilación?
  • Uso del elemento XML de <merge> de Android en rootview para el diseño de la actividad
  • ¿Cómo dirigir la queja de la pelusa del android sobre las implementaciones exportadas del servicio de la mensajería de Firebase?
  • Suprimir "Identificador no permitido en Android"
  • Android Lint: ¿Cómo suprimir todas las advertencias asociadas con la biblioteca de soporte?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.