假设我有两种颜色,并且我需要创建一个实时动画,快速地从一种颜色切换到另一种颜色。
我尝试通过逐渐增加十六进制颜色值来达到目的,但这会导致非常糟糕的动画效果,因为会出现很多无关的中间颜色。
我正在使用setColorFilter(color, colorfilter)
来更改imageview的颜色。
改变色相是否能给我最佳的视觉效果?如果是这样,如何更改纯色的色相?
解决方案:
我通过递归移动色相来解决了这个问题。
private int hueChange(int c,int deg){
float[] hsv = new float[3]; //array to store HSV values
Color.colorToHSV(c,hsv); //get original HSV values of pixel
hsv[0]=hsv[0]+deg; //add the shift to the HUE of HSV array
hsv[0]=hsv[0]%360; //confines hue to values:[0,360]
return Color.HSVToColor(Color.alpha(c),hsv);
}