我的应用程序中有一些滑块允许用户更改ARGB颜色,但我需要将这些值转换为十六进制值,如0xff000000,它是纯黑色。
这是我到目前为止所做的:
protected int toHex(Color col) {
String as = pad(Integer.toHexString(col.getAlpha()));
String rs = pad(Integer.toHexString(col.getRed()));
String gs = pad(Integer.toHexString(col.getGreen()));
String bs = pad(Integer.toHexString(col.getBlue()));
String hex = "0x" + as + rs + gs + bs;
return Integer.parseInt(hex, 16);
}
private static final String pad(String s) {
return (s.length() == 1) ? "0" + s : s;
}
但是在获得如下的Integer值后,我得到输入字符串的NumberFormatException:“0xccffffff”:
int color = toHex(new Color(153f, 153f, 153f, 0.80f));
有关如何将其转换为整数的任何想法?感谢。
答案 0 :(得分:4)
Color参数必须在1f和0f之间浮动。所以这是一种有效的颜色:
int color = toHex(new Color(1f, 1f, 1f, 1f));
哪个是白色。
答案 1 :(得分:0)
问题是你要包含alpha值。
因此,您的最大颜色代码为Col1
1
2
3
d
(8位)。
方法#FFFFFFFF
可让您解析从Integer.parseInt
到-0x80000000
的值。为了从中获取您的价值0x7FFFFFFF
,您必须否定该值并输入0xCC999999
- 这当然没有用。
笨重但稳定的解决方法是使用-0x33666667
。
Long