Android - 拥有动画集

问题描述 投票:0回答:1

我正在尝试在同一视图上制作两个动画:一个用于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动画?

android android-animation objectanimator
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.