2016-12-06 106 views
0

我想在我的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); 

我不知道如何使它才行通过颜色。

+0

编写自定义'机器人。 animation.TypeEvaluator ' – pskink

回答

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); 
+0

我不想改变背景的颜色,但波浪。问题是WaveView只接受整数作为颜色。 – user3653415

+0

您是否使用过任何第三方WaveView或者您正在创建自己的? –

+0

我使用的是https://github.com/gelitenight/WaveView – user3653415

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();