2012-05-15 130 views
2

我有顏色的String.xml文件中像這樣<color name="ItemColor1">#ffff992b</color> 我怎麼能轉換成是四個變量如何從十六進制轉換顏色爲RGB

float Red; 
float Green; 
float Blue; 
float Alfa; 
在Java代碼中

?任何一個可以幫助

回答

9
int color=getResources().getColor(R.color.ItemColor1); 
float red= (color >> 16) & 0xFF; 
float green= (color >> 8) & 0xFF; 
float blue= (color >> 0) & 0xFF; 
float alpha= (color >> 24) & 0xFF; 

我假設你正在使用ARGB(第2個字符是字母),移值會有所不同使用RGBA。 doc表示它是ARGB。

+0

非常感謝你 – AnasBakez

+0

in blue'(color >> 0)'可以用'(color)' –

3

請看看

How to get RGB value from hexadecimal color code in java

int color = Integer.parseInt(myColorString, 16); 
int r = (color >> 16) & 0xFF; 
int g = (color >> 8) & 0xFF; 
int b = (color >> 0) & 0xFF; 
+0

但我的顏色不是字符串。 iam通過使用R.color.ItemColor1獲取顏色,因此它是int – AnasBakez

+1

@AnasBakez然後刪除第一行.......... – dcow

+0

int color = getResources()。getColor(R.color.white); –

10

你也可以使用[紅色,綠色,藍色] Color類的功能:

int color = getResources().getColor(R.color.youcolor); 
    int r = Color.red(color); 
    int g = Color.green(color); 
    int b = Color.blue(color); 
+0

替換謝謝Nicholas! – ramonesteban78

+0

我覺得這更可讀。 – clay

0

更新與ContextCompat爲的getColor已被棄用。

int color = ContextCompat.getColor(mContext, R.color.colorAccent); 
float red = (color >> 16) & 0xFF; 
float green = (color >> 8) & 0xFF; 
float blue = (color) & 0xFF; 
float alpha = (color >> 24) & 0xFF; 

希望它會有用。

相關問題