这是我的代码,它应该采用颜色int,将其转换为HSV,将0.5添加到hue并转换回int。但是在输出中,而不是0xFF00FFFF给出-64768 ...任何想法可能是什么问题?
int c = 0xFFFF0000; /// RED
float[] hsv = new float[3];
Color.colorToHSV( c, hsv ); /// splitting "c" into hsv
hsv[0] = hsv[0]+0.5f; /// adding 0.5 to Hue
int c1 = Color.HSVToColor( hsv ); /// converting hsv back to int
Log.e("color: ", String.valueOf(c1) ); /// outputting new color int
// should be "0xFF00FFFF" (light bule) , but is "-64768" hmm...
谢谢!
答案 0 :(得分:1)
您不是以十六进制打印字符串。 而是打印原始int值。
十六进制的值是FFFF0300,这是有道理的。
答案 1 :(得分:0)
我使用以下代码以十六进制字符串格式打印颜色,具有固定大小(颜色分量为2个字符)。
public abstract class ColorHelper {
public static String toARGBString(int color) {
String ret;
ret = "#";
ret += fix(Integer.toHexString(Color.alpha(color)));
ret += fix(Integer.toHexString(Color.red(color)));
ret += fix(Integer.toHexString(Color.green(color)));
ret += fix(Integer.toHexString(Color.blue(color)));
return ret.toUpperCase();
}
private static String fix(String input) {
if (input.length() == 1) {
return "0" + input;
}
return input;
}
}