类型动画师的预期资源[ResourceType]

时间:2015-12-15 15:57:48

标签: android android-animation android-lint

我已将SDK更新到最新版本,但现在我收到了一个lint错误。

  

错误:animator [ResourceType]

类型的预期资源

此行发生错误:

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

引用的资源/res/anim/right_slide_in.xml如下所示:

<?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" />

之前总是奏效。有人可以解释我为什么会收到这个错误吗?

2 个答案:

答案 0 :(得分:74)

发生错误是因为您将Animator资源存储在错误的目录中!它之前有效,因为AnimatorInflater可以加载xml,无论它保存在哪个文件夹中。

    来自R.anim.*文件夹的
  • res/anim/资源用于查看动画。
  • 来自R.animator.*文件夹的
  • /res/animator/资源适用于Animators

因此,要修复错误,只需将Animator资源从/res/anim/移至/res/animator/

在将资源类型注释添加到支持库之前,这根本没有任何区别。这些注释很长,还有许多新的lint支票,其中包括绊倒你的那个。

将来,如果你收到这样的错误,你可以查看注释,找出你做错了什么。例如,loadAnimator()的{​​{1}}的实现如下所示:

AnimatorInflater

id参数上的public static Animator loadAnimator(Context context, @AnimatorRes int id) throws NotFoundException { return loadAnimator(context.getResources(), context.getTheme(), id); } 注释表示此处只应传递@AnimatorRes个资源。如果你查看Animator的文档,它的内容如下:

  

表示整数参数,字段或方法的返回值是   期望成为动画师资源参考(例如   android.R.animator.fade_in)。

如果描述没有解释错误,那么示例通常会执行;)

答案 1 :(得分:-1)

将此代码添加到build.gradle(Module:app):

android {
  lintOptions {
    disable "ResourceType"
  }
}