如何混合两种不同百分比的颜色

时间:2012-12-17 17:37:00

标签: android colors

我有两种颜色和一个View组件。颜色一是我的组件的背景。我将我的背景颜色改为颜色二。但不是突然。改变类似的动画。例如:

第二个1:90%color1 + 10%color2 第二:1:80%color1 + 20%color2 ...... 第二个1:10%color1 + 90%color2 第二个1:0%color1 + 100%color2

当然我尝试了:

percent=100;
while (percent>=0) {
    color = (color1*precent)+(color2*(100-percent));  
    percent-=10;
}

但这是一个坏主意。结果令人失望。 这个目标有什么解决方案吗? 感谢。

1 个答案:

答案 0 :(得分:1)

你没有清楚地说明为什么结果令人失望,所以我认为这意味着你得到的颜色转变不如你预期的那么好。

你的一般方法似乎是正确的,也许你只是缺少一些细节,所以我会用不同的术语重写它。设color1color2为三元组(R,G,B),其中R,G,B各自在[0,1]范围内。如果不是这种情况,请除以255(如果这是您的情况下的限制),然后再乘以255.让s为从color1过渡到{{1}的步骤数},这里我将color2包含在s的初始框架中,但不包括color1的最终框架。在步骤color2,您的值kp。使用p = (s - k)/s,您可以通过p获取第k帧中的颜色。现在您可能希望将color = p * color1 + (1 - p) * color2乘以255。

此描述的伪代码为:

color

请注意,color1 = (R1, G1, B1) color2 = (R2, G2, B2) s = N for k = 0 to s: # s + 1 steps, according to the description p = (s - k) / s color = (p * color1) + ((1 - p) * color2) 只有k = 0,而color1只有k = s。如您所见,它与您发布的更多细节类似。请注意,这里我将R,G,B中的每一个乘以color2

以下是一些示例,分别从黄色转换为蓝色,p

enter image description here enter image description here enter image description here