我有一個從android.graphics.Color
如何將Android中的顏色整數轉換爲十六進制字符串?
的整數爲-16776961
如何轉換這個值轉換成十六進制字符串格式爲#RRGGBB
簡而言之值產生一個整數:我想輸出#0000FF從-16776961
注:我不希望輸出包含alpha和我也都試過this example沒有任何成功
我有一個從android.graphics.Color
如何將Android中的顏色整數轉換爲十六進制字符串?
的整數爲-16776961
如何轉換這個值轉換成十六進制字符串格式爲#RRGGBB
簡而言之值產生一個整數:我想輸出#0000FF從-16776961
注:我不希望輸出包含alpha和我也都試過this example沒有任何成功
面具可以確保你只能得到RRGGBB,並且%06X給你補零十六進制(總是6個字符長):
String hexColor = String.format("#%06X", (0xFFFFFF & intColor));
這工作完美,謝謝!比試圖在Integer.toHexString()上使用子字符串更容易和更準確。 – Tom
如果我想換一個方向,它會怎麼樣? –
我剛剛意識到有Color.parseColor(字符串十六進制)方法,正是我所要求的。 –
嘗試Integer.toHexString()
來源: In Java, how do I convert a byte array to a string of hex digits while keeping leading zeros?
這個答案保留了顏色的alpha值 –
好吧,如果你想擺脫alpha,只需爲它創建一個位掩碼:Integer。toHexString(值&0x00FFFFFF) –
這是如何完成的? –
我相信我已經找到了答案,此代碼將整數轉換爲十六進制字符串,並刪除alpha。
Integer intColor = -16895234;
String hexColor = "#" + Integer.toHexString(intColor).substring(2);
注意只有當你確信刪除阿爾法不會影響任何使用此代碼。
如果你通過這個發送'0x00FFFFFF',它會崩潰'Color.parseColor'。 – TWiStErRob
這裏是我做了什麼
int color=//your color
Integer.toHexString(color).toUpperCase();//upercase with alpha
Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha
謝謝你們你的答案做的事情
第一個變體不適用於'0x00FFFFFF' - >「FFFFFF」(無alpha)。第二個變體不適用於'0x00000FFF' - >「F」(丟失位)。 – TWiStErRob
@TWiStErRob是否爲您提供了可靠的Alpha通道顏色解決方案? – Saket
@Saket頂部答案的變體應該:'String.format(「#%08X」,intColor)' – TWiStErRob
String int2string = Integer.toHexString(INTEGERColor); //to ARGB
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color
用這種方法Integer.toHexString,你可以有一些顏色當一個未知的顏色異常使用Color.parseColor。
並使用此方法String.format(「#%06X」,(0xFFFFFF & intColor)),您將失去alpha值。
因此,我建議這個方法:ARGB顏色的
public static String ColorToHex(int color) {
int alpha = android.graphics.Color.alpha(color);
int blue = android.graphics.Color.blue(color);
int green = android.graphics.Color.green(color);
int red = android.graphics.Color.red(color);
String alphaHex = To00Hex(alpha);
String blueHex = To00Hex(blue);
String greenHex = To00Hex(green);
String redHex = To00Hex(red);
// hexBinary value: aabbggrr
StringBuilder str = new StringBuilder("#");
str.append(alphaHex);
str.append(blueHex);
str.append(greenHex);
str.append(redHex);
return str.toString();
}
private static String To00Hex(int value) {
String hex = "00".concat(Integer.toHexString(value));
return hex.substring(hex.length()-2, hex.length());
}
整數值爲十六進制字符串:
String hex = Integer.toHexString(color); // example for green color FF00FF00
十六進制字符串到整數ARGB顏色值:
int color = (Integer.parseInt(hex.substring(0,2), 16) << 24) + Integer.parseInt(hex.substring(2), 16);
是什麼你試圖設置十六進制顏色?我認爲這裏有一個不同的答案 – Blundell
@Blundell是將顏色導出到外部應用程序。顏色需要採用這種格式#RRGGBB –
那麼http://developer.android.com/reference/android/content/res/Resources.html#getColor(int)有什麼問題?你必須粘貼網址或滾動到getColor(int) – Blundell