android hue的动画效果,android:动画颜色从颜色更改颜色

结合@ zed和@ Phil的答案给出了一个很好的平滑过渡使用ValueAnimator。

final float[] from = new float[3],

to = new float[3];

Color.colorToHSV(Color.parseColor("#FFFFFFFF"), from); // from white

Color.colorToHSV(Color.parseColor("#FFFF0000"), to); // to red

ValueAnimator anim = ValueAnimator.ofFloat(0, 1); // animate from 0 to 1

anim.setDuration(300); // for 300 ms

final float[] hsv = new float[3]; // transition color

anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){

@Override public void onAnimationUpdate(ValueAnimator animation) {

// Transition along each axis of HSV (hue, saturation, value)

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描述了圆柱坐标中的颜色,它很好地分离了颜色的属性,并允许在单个轴上平滑过渡。从image below可以看到,沿H,S或V方向行进提供了一个漂亮的连续的颜色之间的过渡。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值