安卓利用动画设置背景颜色
Posted 心脏dance
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓利用动画设置背景颜色相关的知识,希望对你有一定的参考价值。
利用插值器和 ArgbEvaluator() 来做的
插值器用来做动画,ArgbEvaluator() 用来做颜色渐变
插值器的使用:安卓插值器(ValueAnimator)_心脏dance的博客-CSDN博客_安卓valueanimator
ArgbEvaluator()的使用:看代码和注释即可
上代码:
private var valueAnimator: ValueAnimator? = null
private val evaluator by lazy
ArgbEvaluator()
/**
* 背景色渐变动画
*/
private fun startValueAnimator(view: View)
valueAnimator = ValueAnimator.ofFloat(0f, 1f)
valueAnimator?.addUpdateListener animation ->
val value = animation.animatedValue as Float
view.setBackgroundColor(
evaluator.evaluate(
value, // 渐变的位置,从 0-1 即:【red - green】
ContextCompat.getColor(context, R.color.red), // 开始的颜色
ContextCompat.getColor(context, R.color.green) // 结束的颜色
) as Int
)
valueAnimator?.addListener(object : Animator.AnimatorListener
override fun onAnimationStart(animation: Animator?)
view.setBackgroundColor(ContextCompat.getColor(context, R.color.red))
override fun onAnimationEnd(animation: Animator?)
view.setBackgroundColor(ContextCompat.getColor(context, R.color.green))
override fun onAnimationCancel(animation: Animator?)
view.setBackgroundColor(ContextCompat.getColor(context, R.color.green))
override fun onAnimationRepeat(animation: Animator?)
)
valueAnimator?.duration = 521L // 动画的时间
valueAnimator?.start()
注意:因为动画在播放设置背景颜色的时候,持有了view的引用,所以如果你的渐变时间过长,记得不想渐变的时候(比如view看不见了,不需要展现动画了),把动画关了,否则会造成内存泄漏。关闭的语句为: valueAnimator?.cancel()
以上是关于安卓利用动画设置背景颜色的主要内容,如果未能解决你的问题,请参考以下文章
如何为 QPushButton 的背景颜色设置动画(动态更改按钮颜色)