效果:
第一个方法可以实现多种颜色的切换 其他的只能实现俩个颜色之间的切换
ValueAnimator valueAnimator = ValueAnimator.ofArgb(a, b);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int animatedValue = (int) valueAnimator.getAnimatedValue();
bg.setBackgroundColor(animatedValue);
}
});
valueAnimator.setDuration(2000);
valueAnimator.setRepeatCount(1);
valueAnimator.start();
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 100);
final ArgbEvaluator argbEvaluator = new ArgbEvaluator();
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int animatedValue = (int) valueAnimator.getAnimatedValue();
int color = (int) argbEvaluator.evaluate(animatedValue / 100f, a, b);
bg.setBackgroundColor(color);
}
});
valueAnimator.setDuration(2000);
valueAnimator.setRepeatCount(1);
valueAnimator.start();
final View bg = findViewById(R.id.bg);
final int a = Color.BLUE;
final int b = Color.RED;
ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 100);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int animatedValue = (int) valueAnimator.getAnimatedValue();
int color = ColorUtils.blendARGB(a, b, animatedValue / 100f);
bg.setBackgroundColor(color);
}
});
valueAnimator.setDuration(2000);
valueAnimator.setRepeatCount(1);
valueAnimator.start();