将字符串转换为十六进制以用作画布颜色Java
问题描述:
void changeColor(int a, int r, int g, int b){
String hex = + Integer.toHexString(a) + Integer.toHexString(r) +
Integer.toHexString(g) + Integer.toHexString(b);
int color = hex //Obviously this is a type mismatch, but how do I do this?
mpaint.setColor(color);
}
显然这是一种类型不匹配,但我该怎么做?将字符串转换为十六进制以用作画布颜色Java
答
如果你需要一个颜色变量,你可以使用颜色构造器(但不得不范围更改为0.0-1.0)
Color(float r, float g, float b, float a)
但是,如果你到底需要一个int
,你有使用bitshifts(这是一个例子,你必须知道颜色分量需要如何进行排序):
int color = (r << 24) | (g << 16) | (b << 8) | a;
+0
其实我发现用于绘制对象的Android SDK具有相同格式的内置颜色设置器。 mpaint.setARGB(a,r,g,b); – 2012-01-04 00:34:51
的可能重复[转换成十六进制的字符串表示的字节数组使用Java?](http://stackoverflow.com/questions/140131/convert-a-string-representation-of-a-hex-dump-to-a-byte-array-using-java) – Bozho 2012-01-03 22:54:29