基于偏移量实现颜色转换:不使用ValueAnimator,解决类型适配问题
基于偏移量的颜色值转换方案
你遇到的问题主要有两个原因:一是直接传入了颜色资源ID而非实际颜色值,二是没有对ArgbEvaluator.evaluate()的返回值进行类型强转。以下是修正后的实现步骤:
1. 从资源中获取实际颜色值
R.color.start和R.color.end是资源ID,并非真正的颜色整数,需要先通过上下文解析为具体颜色值:
import androidx.core.content.ContextCompat val startColor = ContextCompat.getColor(context, R.color.start) val endColor = ContextCompat.getColor(context, R.color.end)
2. 执行颜色插值并强转类型
ArgbEvaluator.evaluate()返回的Any实际是Integer类型,强转为Int后即可直接使用:
val evaluator = ArgbEvaluator() // offset为1.0时返回startColor,0.0时返回endColor,符合你的需求 val currentColor = evaluator.evaluate(offset, startColor, endColor) as Int
3. 设置到View属性
直接将转换后的颜色设置给backgroundTint:
view.backgroundTintList = ColorStateList.valueOf(currentColor)
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

