动画师类型的预期资源 [ResourceType]
Expected resource of type animator [ResourceType]
我已经将我的 SDK 更新到最新版本,但现在我收到一个 lint 错误。
Error: Expected resource of type 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" />
以前一直有效。有人可以解释为什么我会收到该错误吗?
错误发生是因为您将 Animator
资源存储在错误的目录中!它以前工作是因为 AnimatorInflater
可以加载 xml 而不管它保存在哪个文件夹中。
R.anim.*
res/anim/
文件夹中的资源用于视图动画。
R.animator.*
/res/animator/
文件夹中的资源用于 Animators
。
因此,要修复错误,只需将您的 Animator
资源从 /res/anim/
移动到 /res/animator/
。
这在资源类型注释被添加到支持库之前根本没有任何区别。除了这些注释之外,还有许多新的 lint 检查,其中包括让您感到困惑的检查。
以后如果您遇到这样的错误,您可以查看注释以找出您做错了什么。例如 AnimatorInflater
的 loadAnimator()
的实现如下所示:
public static Animator loadAnimator(Context context, @AnimatorRes int id)
throws NotFoundException {
return loadAnimator(context.getResources(), context.getTheme(), id);
}
id 参数上的@AnimatorRes
注释表示此处只应传递Animator
资源。如果您查看 @AnimatorRes
的文档,它是这样写的:
Denotes that an integer parameter, field or method return value is
expected to be an animator resource reference (e.g.
android.R.animator.fade_in).
如果描述没有解释错误,那么示例通常会解释 ;)
将此代码添加到您的 build.gradle(模块:应用程序):
android {
lintOptions {
disable "ResourceType"
}
}
我已经将我的 SDK 更新到最新版本,但现在我收到一个 lint 错误。
Error: Expected resource of type 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" />
以前一直有效。有人可以解释为什么我会收到该错误吗?
错误发生是因为您将 Animator
资源存储在错误的目录中!它以前工作是因为 AnimatorInflater
可以加载 xml 而不管它保存在哪个文件夹中。
R.anim.*
res/anim/
文件夹中的资源用于视图动画。R.animator.*
/res/animator/
文件夹中的资源用于Animators
。
因此,要修复错误,只需将您的 Animator
资源从 /res/anim/
移动到 /res/animator/
。
这在资源类型注释被添加到支持库之前根本没有任何区别。除了这些注释之外,还有许多新的 lint 检查,其中包括让您感到困惑的检查。
以后如果您遇到这样的错误,您可以查看注释以找出您做错了什么。例如 AnimatorInflater
的 loadAnimator()
的实现如下所示:
public static Animator loadAnimator(Context context, @AnimatorRes int id)
throws NotFoundException {
return loadAnimator(context.getResources(), context.getTheme(), id);
}
id 参数上的@AnimatorRes
注释表示此处只应传递Animator
资源。如果您查看 @AnimatorRes
的文档,它是这样写的:
Denotes that an integer parameter, field or method return value is expected to be an animator resource reference (e.g. android.R.animator.fade_in).
如果描述没有解释错误,那么示例通常会解释 ;)
将此代码添加到您的 build.gradle(模块:应用程序):
android {
lintOptions {
disable "ResourceType"
}
}