2012-05-15 2 views

ответ

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 (1-2 символа являются альфа), сдвигая значения будут отличаться используя RGBA. doc говорит, что это ARGB.

+0

спасибо – AnasBakez

+0

в синем '(цвет >> 0)' можно заменить на '(цвет)' –

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

спасибо Николаю! – 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; 

Надеюсь, это будет полезно.

Смежные вопросы