平滑色彩动画

时间:2016-12-06 09:59:09

标签: android

我正在尝试在WaveView中创建平滑的色彩动画。不幸的动画是从头到尾通过各种颜色创造彩虹效果垃圾邮件。

我需要它从红色变为绿色(红色 - >橙色 - >黄色 - >绿色 - >绿色),就像在RGB表格上一样。

这是我的ObjectAnimator:

ObjectAnimator waveColor = ObjectAnimator.ofInt(
            mWaveView, "waveColor",Color.parseColor("#64ff0000"),Color.parseColor("#6400ff00"));

    waveColor.setDuration(7000);
    waveColor.setInterpolator(new LinearInterpolator());
    animators.add(waveColor);

我不知道如何让它只是通过这些颜色。

2 个答案:

答案 0 :(得分:0)

检查Link

希望我能正确理解你的问题并帮助

    ColorDrawable[] color = {new ColorDrawable(Color.RED), new ColorDrawable(Color.GREEN)};
    TransitionDrawable trans = new TransitionDrawable(color);
    //This will work also on old devices. The latest API says you have to use setBackground instead.
    mWaveView.setBackgroundDrawable(trans);
    trans.startTransition(7000);

答案 1 :(得分:0)

最好的方法是使用ValueAnimator和ColorUtils.blendARGB

 ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
 valueAnimator.setDuration(325);
 valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {

              float fractionAnim = (float) valueAnimator.getAnimatedValue();

              view.setColorBackground(ColorUtils.blendARGB(Color.parseColor("#FFFFFF")
                                    , Color.parseColor("#000000")
                                    , fractionAnim));
        }
});
valueAnimator.start();