首先,android.graphics.Color是僅有的靜態方法組成的類多數民衆贊成。如何以及爲什麼創建一個新的android.graphics.Color對象? (這是完全無用的和對象本身沒有存儲數據)
但不管怎麼說......我會使用一些實際存儲數據...
一個整數由4個字節的對象的承擔(在java中)。從標準java Color對象中查看函數getRGB(),我們可以看到java將每種顏色映射爲ARGB(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%的α)
這兩種方法基本上與上面創建的第一種方法做同樣的事情。
這看起來像同樣的問題:http://stackoverflow.com/questions/6926644/android-color-to-int-conversion – TravJenkins
哪裏你的顏色對象來自?我很困惑你爲什麼傳遞一個Color對象,而不是首先代表顏色的int。 android中的Color類定義了用於創建和轉換顏色整數的靜態方法。從我的理解,它不應該初始化 –