我正在尝试在同一视图上制作两个动画:一个用于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动画?
答案 0 :(得分:0)
发现我们可以为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))