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

标签 android colors

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

第二个 1:90% 颜色 1 + 10% 颜色 2 第二个 1:80% 颜色 1 + 20% 颜色 2 …… 第二个 1:10% 颜色 1 + 90% 颜色 2 第二个 1:0% 颜色 1 + 100% 颜色 2

我当然试过了:

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

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

最佳答案

您没有明确说明结果令人失望的原因,所以我假设这意味着您获得的颜色过渡没有预期的那么好。

您的一般方法似乎是正确的,也许您只是遗漏了一些细节,所以我会用不同的术语重写它。设 color1color2 是三元组 (R, G, B),其中每个 R、G、B 都在 [0, 1] 范围内。如果不是这种情况,则除以 255(如果这是您的情况的限制),然后再乘以 255。令 s 为从 color1 转换的步骤数> 到 color2,这里我在 s 中包含了带有 color1 的初始帧,但没有包含带有 color2 的最终帧>。在步骤 k 中,您有一个值 p 使得 p = (s - k)/s。使用 p,您可以通过 color = p * color1 + (1 - p) * color2 获得帧 k 中的颜色。现在您可能希望将 color 乘以 255。

这个描述的伪代码是:

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 时,您只有 color2。如您所见,它类似于您发布的更多详细信息。请注意,这里我将 R、G、B 中的每一个乘以 p

下面是一些从黄色过渡到蓝色的示例,分别为 steps = 10, 25, 500

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

关于android - 如何混合两种不同百分比的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919133/

相关文章:

Android Webview 无法加载 CSS 并显示 blockquote 字体颜色效果

c++ - OpenGL 不显示中间颜色

Android - 如何生成有限制的随机颜色?

opencv - OpenCV 对其 RGB/BGR 颜色空间使用了哪些颜色匹配函数?

javascript - HTML JavaScript Canvas 颜色变化

D3.js 强制有向图,每组不同颜色?

android - 自定义适配器和 ListView 崩溃

java - Android - 使用两个 xml 文件显示单个 Activity

java - 由于没有服务而无法启动香料管理器(Robospice)

android - 什么决定了 View 何时实际显示?