2011-06-30 74 views
147

我有一個從android.graphics.Color如何將Android中的顏色整數轉換爲十六進制字符串?

的整數爲-16776961

如何轉換這個值轉換成十六進制字符串格式爲#RRGGBB

簡而言之值產生一個整數:我想輸出#0000FF從-16776961

注:我不希望輸出包含alpha和我也都試過this example沒有任何成功

+0

是什麼你試圖設置十六進制顏色?我認爲這裏有一個不同的答案 – Blundell

+0

@Blundell是將顏色導出到外部應用程序。顏色需要採用這種格式#RRGGBB –

+0

那麼http://developer.android.com/reference/android/content/res/Resources.html#getColor(int)有什麼問題?你必須粘貼網址或滾動到getColor(int) – Blundell

回答

349

面具可以確保你只能得到RRGGBB,並且%06X給你補零十六進制(總是6個字符長):

String hexColor = String.format("#%06X", (0xFFFFFF & intColor)); 
+3

這工作完美,謝謝!比試圖在Integer.toHexString()上使用子字符串更容易和更準確。 – Tom

+0

如果我想換一個方向,它會怎麼樣? –

+7

我剛剛意識到有Color.parseColor(字符串十六進制)方法,正是我所要求的。 –

16

我相信我已經找到了答案,此代碼將整數轉換爲十六進制字符串,並刪除alpha。

Integer intColor = -16895234; 
String hexColor = "#" + Integer.toHexString(intColor).substring(2); 

注意只有當你確信刪除阿爾法不會影響任何使用此代碼。

+1

如果你通過這個發送'0x00FFFFFF',它會崩潰'Color.parseColor'。 – TWiStErRob

7

這裏是我做了什麼

int color=//your color 
Integer.toHexString(color).toUpperCase();//upercase with alpha 
Integer.toHexString(color).toUpperCase().substring(2);// uppercase without alpha 

謝謝你們你的答案做的事情

+0

第一個變體不適用於'0x00FFFFFF' - >「FFFFFF」(無alpha)。第二個變體不適用於'0x00000FFF' - >「F」(丟失位)。 – TWiStErRob

+0

@TWiStErRob是否爲您提供了可靠的Alpha通道顏色解決方案? – Saket

+0

@Saket頂部答案的變體應該:'String.format(「#%08X」,intColor)' – TWiStErRob

0
String int2string = Integer.toHexString(INTEGERColor); //to ARGB 
String HtmlColor = "#"+ int2string.substring(int2string.length() - 6, int2string.length()); // a stupid way to append your color 
2

用這種方法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()); 
    } 
0

整數值爲十六進制字符串:

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); 
相關問題