我正在尝试将 RGBA 值(分割 4 个值)转换为十六进制值。
目前,我有以下代码:
int red = Integer.parseInt(colors[0]);
int green = Integer.parseInt(colors[1]);
int blue = Integer.parseInt(colors[2]);
float alpha = Float.parseFloat(colors[3]);
现在,我想将这些颜色转换为十六进制,这样我就可以使用此方法来创建颜色:new ColorDrawable(0xFF99CC00)
有什么建议吗?
最佳答案
public int toHex(Color color) {
String alpha = pad(Integer.toHexString(color.getAlpha()));
String red = pad(Integer.toHexString(color.getRed()));
String green = pad(Integer.toHexString(color.getGreen()));
String blue = pad(Integer.toHexString(color.getBlue()));
String hex = "0x" + alpha + red + green + blue;
return Integer.parseInt(hex, 16);
}
private static final String pad(String s) {
return (s.length() == 1) ? "0" + s : s;
}
使用
int color = toHex(new Color(1f, 1f, 1f, 1f));
或者你可以使用
Color.argb(a_int, r_int, g_int, b_int);
//(Multiply int value by 255.0f)
关于java - 从 RGBA 到十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853157/