【问题标题】:Expected resource of type animator [ResourceType]动画师类型的预期资源 [ResourceType]
【发布时间】:2015-12-15 15:57:47
【问题描述】:

我已将我的 SDK 更新到最新版本,但现在出现 lint 错误。

错误:动画器类型的预期资源 [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" />

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

【问题讨论】:

    标签: android android-animation android-lint


    【解决方案1】:

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

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

    因此,要修复错误,只需将您的 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)。

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

    【讨论】:

      【解决方案2】:

      将此代码添加到您的 build.gradle(模块:app):

      android {
        lintOptions {
          disable "ResourceType"
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-04-10
        • 2017-06-06
        • 2016-07-15
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2017-06-17
        • 2015-06-24
        相关资源
        最近更新 更多