Android - 有一个动画集

Android - having an animation set

我正在尝试在同一个视图上制作两个动画:一个用于 backgroundTint,一个用于缩放...使用 ObjectAnimator.ofPropertyValuesHolder 最有意义,因为您可以只列出代表动画。我有这样的东西:

val enabledColor = context.getColor(R.color.colorAccent)
val disabledColor = context.getColor(R.color.colorDisabled)       

val anim = ObjectAnimator.ofPropertyValuesHolder(imgBackground,
        PropertyValuesHolder.ofFloat(View.SCALE_X, 1F, 1.2F),
        PropertyValuesHolder.ofFloat(View.SCALE_Y, 1F, 1.2F),
        PropertyValuesHolder.ofInt("colorFilter", enabledColor, disabledColor)
)

但是,colorFilter(背景色调)没有正确设置动画,因为它正在为 Int 设置动画...当动画播放时,background_tint 到处都是:黄色, 绿色等。我想保持这种风格 - 使用 ObjectAnimator 对所有动画进行分组。

之前,我有:

    ObjectAnimator.ofArgb(imgBackground, colorAnimProperty, disabledColor, enabledColor)
    val scaleUpAnim = ObjectAnimator.ofPropertyValuesHolder(imgBackground,
        PropertyValuesHolder.ofFloat(View.SCALE_X, 1F, 1.2F),
        PropertyValuesHolder.ofFloat(View.SCALE_Y, 1F, 1.2F)
    )

哪个有用,但是很不方便,因为我需要一个 AnimationSet 来组合它们...

如何使用 PropertyValuesHolder 编写 background_tint 动画?

发现我们可以为 PropertyValuesHolder 提供一个 Evaluator 函数来为我们进行计算。方便的是,有一个 ArgsEvaluator。因此,它看起来像这样:

animEnable = ObjectAnimator.ofPropertyValuesHolder(imgBackground,
        PropertyValuesHolder.ofFloat(View.SCALE_X, 1F, 1.2F),
        PropertyValuesHolder.ofFloat(View.SCALE_Y, 1F, 1.2F),
        PropertyValuesHolder.ofObject("colorFilter", ArgbEvaluator(), disabledColor, enabledColor))