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

  • Android Lint piensa erróneamente que la versión min SDK es 1
  • Android Lint: ¿Cómo suprimir todas las advertencias asociadas con la biblioteca de soporte?
  • Ejecutar pelusa al construir proyectos de estudio de android
  • Cómo detectar errores de variables de recursos en Android Studio (por ejemplo: "% 1 $ s")
  • ¿Cómo el ajuste baselineAligned a false mejora el rendimiento en LinearLayout?
  • Uso del elemento XML de <merge> de Android en rootview para el diseño de la actividad
  • Controles de pelusa de Kotlin y android
  • Evitar Android Lint se queja de cadena no traducida
  • ¿Cómo dirigir la queja de la pelusa del android sobre las implementaciones exportadas del servicio de la mensajería de Firebase?
  • Herramienta Lint de Android SDK Ignorar las nuevas advertencias de API
  • Uso de Twitter4j en android, obteniendo errores de pelusa en la biblioteca - Referencia de paquete no válida en la biblioteca
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.