我正在尝试修改第三方软件。我想使用一些由某些方法(我无法修改)返回的颜色作为整数。但是,我想使用RGB格式,如#FF00FF。我如何进行转换?将整数颜色值转换为RGB
这是一个HTML示例http://www.shodor.org/stella2java/rgbint.html 我想用Java在Android上存档相同的东西。
我正在尝试修改第三方软件。我想使用一些由某些方法(我无法修改)返回的颜色作为整数。但是,我想使用RGB格式,如#FF00FF。我如何进行转换?将整数颜色值转换为RGB
这是一个HTML示例http://www.shodor.org/stella2java/rgbint.html 我想用Java在Android上存档相同的东西。
使用此
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
我们知道在十六进制颜色值的lenght为6。所以你看,这里6。 %06X与来自(0xFFFFFF & intColor)的结果相匹配,并且如果长度小于6,则通过将ZERO追加到结果的左侧而使结果为6。你看#,所以这#字符被追加到结果,最后你得到一个十六进制颜色值。
RGB使用十六进制数字格式。 如果您有整数值,则将其转换为hexa ,.
我认为是最简单,最好的解决办法,我是直接使用Color类,如下所示:
int red = Color.red(intColor);
int green = Color.green(intColor);
int blue = Color.blue(intColor);
这样,我已经可以用整数值处理,而无需处理字符串。另一方面,如果代表rgb颜色的字符串是你需要的,Pankaj Kumar的答案是最好的。我希望这对某人有用。
很好。谢谢 – cxphong
语法可能已更改。除非有一个我不知道的静态Color类:'new Color(intColor).getRed();' –
我不知道......我现在还没有在Android上工作很长一段时间。如果您确定这一点,您可以使用此信息编辑我的答案,甚至可以使用发生此更改的版本 –
Color c = Color.valueOf(colorInt);
除此之外,它似乎没有可能建立从任意的argb Color实例。底层代码使用私有构造函数:
/**
* Creates a new <code>Color</code> instance from an ARGB color int.
* The resulting color is in the {@link ColorSpace.Named#SRGB sRGB}
* color space.
*
* @param color The ARGB color int to create a <code>Color</code> from
* @return A non-null instance of {@link Color}
*/
@NonNull
public static Color valueOf(@ColorInt int color) {
float r = ((color >> 16) & 0xff)/255.0f;
float g = ((color >> 8) & 0xff)/255.0f;
float b = ((color ) & 0xff)/255.0f;
float a = ((color >> 24) & 0xff)/255.0f;
return new Color(r, g, b, a, ColorSpace.get(ColorSpace.Named.SRGB));
}
请问您能解释括号内的代码吗? – Marek
你问'(0xFFFFFF&intColor)'?如果是,则会将int值转换为十六进制。 –
我对“#%06X”更感兴趣。这是一个正则表达式,我完全不明白。你能解释一下吗? – Marek