【发布时间】:2013-08-15 11:51:01
【问题描述】:
假设我有两种颜色,我需要创建一个可以快速从一种颜色切换到另一种颜色的实时动画。
我试图只增加十六进制颜色,直到达到另一个,但这给出了一个非常糟糕的动画,因为它显示了许多不相关的颜色。
我正在使用setColorFilter(color, colorfilter) 来更改图像视图的颜色。
更改 HUE 会给我最好的视觉效果吗?如果是这样,如何将其更改为纯色?
解决方案: 我通过递归改变色调来解决它
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);
}
【问题讨论】:
-
你尝试过TransitionDrawable吗?
-
什么颜色? ImageView 的背景?
-
图像视图的滤色器的颜色。不,我没有使用 TransitionDrawable,因为 drawable 既不是固定的颜色也不是固定的。
-
什么意思:deawable 没有修复?
-
要使用偏移来混合颜色,请在此处查看我的答案:stackoverflow.com/a/24285364/400493