我正在尝试在同一视图上制作两个动画:一个用于backgroundTint,一个用于缩放...使用ObjectAnimator.ofPropertyValuesHolder
最有意义,因为您可以列出表示动画的propertyValueHolder。我有这样的事情:
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))