因此,我正在使用RecyclerView来显示一些视图。用户可以按住一个视图来选择它。选中后,视图应将其颜色更改为绿色。我正在使用ValueAnimator进行平滑过渡。使用view.setBackgroundColor很容易。但是现在我正在使用自定义形状。因此该方法不再有效。
我尝试使用setColorFilter设置颜色,将其转换为GardientDrawable并调用setColor。我还尝试了setColorFilter,尝试将其强制转换为ColorDrawable和ShapeDrawable(失败)。那是我当前的代码。
val color1 = main.getColorFromAttr(if (cheked) R.attr.colorAppRowBackground else R.attr.colorAppRowBackground)//holder.view.solidColor
val color2 = main.getColorFromAttr(if (!checked) R.attr.colorAppRowBackground else R.attr.colorAppRowBackground)
ValueAnimator.ofObject(ArgbEvaluator(), color1, color2).apply {
duration = 200
addUpdateListener { valueAnimator -> (holder.view.background as GradientDrawable).setColor(valueAnimator.animatedValue as Int) }
}.start()
}
我希望颜色会变为绿色,但是它什么也没做。