You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于偏移量实现颜色转换:不使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:40:34