当前位置: 首页 > 知识库问答 >
问题:

应为animator[ResourceType]类型的资源

司马项明
2023-03-14

我已经将我的SDK更新到最新版本,但是现在我得到了一个棉绒错误。

错误:应为animator[ResourceType]类型的资源

错误发生在这一行:

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

引用的资源/res/anim/right\u滑入。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个答案

徐承载
2023-03-14

将此代码添加到您的构建中。gradle(模块:应用程序):

android {
  lintOptions {
    disable "ResourceType"
  }
}
夏法
2023-03-14

发生此错误的原因是您将动画师资源存储在错误的目录中!它以前工作过,因为无论xml保存在哪个文件夹中,AnimatorInflater都可以加载xml。

    来自res/anim//code>文件夹的资源用于查看动画。
  • r. Animator.*文件夹中的资源用于Animator

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

在将资源类型注释添加到支持库之前,这一点都不起作用。长时间以来,在这些注释中,还有许多新的lint检查,其中之一就是让您绊倒的。

在将来,如果您遇到这样的错误,您可以查看注释以找出您做错了什么。例如,AnimatorInflaterloadAnimator()的实现如下所示:

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

id参数上的@AnimatorRes注释表示此处只应传递Animator资源。如果您查看@AnimatorRes的文档,其内容如下:

表示整型参数、字段或方法返回值应为动画师资源引用(例如android.R.animator.fade_in)。

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

 类似资料: