Итак, я использую 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()
}
Я ожидаю, что цвет изменится на зеленый, но он ничего не делает.