我已将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" />
之前总是奏效。有人可以解释我为什么会收到这个错误吗?
答案 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"
}
}