首先,android.graphics.Color是一个仅由静态方法组成的类。您如何以及为什么创建新的android.graphics.Color对象?(这是完全无用的,对象本身不存储任何数据)
但无论如何...我将假设您使用一些实际存储数据的对象...
整数由 4 个字节(在 java 中)组成。从标准java Color对象中查看函数getRGB(),我们可以看到java将每种颜色映射到EGGB(Alpha-Red-Green-Blue)顺序的整数的一个字节。我们可以使用自定义方法复制此行为,如下所示:
public int getIntFromColor(int Red, int Green, int Blue){
Red = (Red << 16) & 0x00FF0000; //Shift red 16-bits and mask out other stuff
Green = (Green << 8) & 0x0000FF00; //Shift Green 8-bits and mask out other stuff
Blue = Blue & 0x000000FF; //Mask out anything not blue.
return 0xFF000000 | Red | Green | Blue; //0xFF000000 for 100% Alpha. Bitwise OR everything together.
}
这假设您可以以某种方式检索单个红色、绿色和蓝色分量,并且您为颜色传递的所有值都是 0-255。
如果 RGB 值采用介于 0 和 1 之间的浮点百分比形式,请考虑以下方法:
public int getIntFromColor(float Red, float Green, float Blue){
int R = Math.round(255 * Red);
int G = Math.round(255 * Green);
int B = Math.round(255 * Blue);
R = (R << 16) & 0x00FF0000;
G = (G << 8) & 0x0000FF00;
B = B & 0x000000FF;
return 0xFF000000 | R | G | B;
}
正如其他人所说,如果你使用的是标准的java对象,只需使用getRGB();
如果您决定正确使用Android颜色类,您还可以执行以下操作:
int RGB = android.graphics.Color.argb(255, Red, Green, Blue); //Where Red, Green, Blue are the RGB components. The number 255 is for 100% Alpha
或
int RGB = android.graphics.Color.rgb(Red, Green, Blue); //Where Red, Green, Blue are the RGB components.
正如其他人所说...(第二个函数假设 100% alpha)
这两种方法基本上都与上面创建的第一种方法执行相同的操作。