我有两种颜色的字符串表示形式(例如:“#FFFFFF
”和“#000000
”),我正在寻找一种以编程方式获取这两种颜色的中间颜色的方法。我称之为“中位数”的颜色将是在中心遇到这两个颜色的颜色。
我需要这个才能分两步绘制渐变:
因此它看起来像从第一种颜色到第二种颜色的1个渐变,这是我无法做到的。
我怎样才能做到这一点?
答案 0 :(得分:4)
你可以试试这个:
new ArgbEvaluator().evaluate(0.5, 0xffffff, 0x000000);
更多信息: http://developer.android.com/reference/android/animation/ArgbEvaluator.html:
答案 1 :(得分:2)
我会分别处理每个RGB组件。您可以使用Long.valueOf()将十六进制解析为数字。平均你的两个值(根据需要进行舍入),然后使用Long.toString()填充到两位数返回十六进制。
我测试过的一些示例代码:
String colour1 = "#FFFFFF";
String colour2 = "#000000";
StringBuilder result = new StringBuilder("#");
for (int i=0;i<3;i++) {
String h1 = colour1.substring(i*2+1, 3+(i*2));
String h2 = colour2.substring(i*2+1, 3+(i*2));
long l1 = Long.parseLong(h1, 16);
long l2 = Long.parseLong(h2, 16);
long mid = (l1 + l2) / 2; //truncating not rounding
String midStr = Long.toString(mid, 16);
if (midStr.length() == 1) {
result.append("0");
}
result.append(midStr.toUpperCase());
}