Как сделать переливающийся цвет?
У меня имеет CircleLineVisualizer, в параметре avColor которого мне надо передать цвет, который будет пульсировать. Подскажите, пожалуйста, как это сделать
Ответы (1 шт):
Автор решения: Sergei Buvaka
→ Ссылка
Вы можете попробовать ValueAnimator, чтоб получить такой результат.
final float[] from = new float[3],
to = new float[3];
Color.colorToHSV(Color.parseColor("#FFFFFFFF"), from); // с белого цвета
Color.colorToHSV(Color.parseColor("#FFFF0000"), to); // к красному
ValueAnimator anim = ValueAnimator.ofFloat(0, 1); // анимация со значение 0 до 1
anim.setDuration(300); // длительность анимации 300 миллисекунд
final float[] hsv = new float[3]; // переходной цвет
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){
@Override public void onAnimationUpdate(ValueAnimator animation) {
// Переход по каждой оси HSV (оттенок, насыщенность, значение)
hsv[0] = from[0] + (to[0] - from[0])*animation.getAnimatedFraction();
hsv[1] = from[1] + (to[1] - from[1])*animation.getAnimatedFraction();
hsv[2] = from[2] + (to[2] - from[2])*animation.getAnimatedFraction();
view.setBackgroundColor(Color.HSVToColor(hsv));
}
});
anim.start();
HSV даст более приятный переход, чем цветовое пространство Android по умолчанию, потому что HSV описывает цвета в цилиндрических координатах, которые красиво разделяют свойства цвета и обеспечивают плавный переход по одной оси.