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