5

我在 String.xml 文件中有这样的颜色,我 <color name="ItemColor1">#ffff992b</color> 如何将其转换为四个变量

float Red;
float Green;
float Blue;
float Alfa;

在 Java 代码中?任何人都可以提供帮助

4

4 回答 4

16

您还可以使用 Color 类的 [red, green, blue] 函数:

    int color = getResources().getColor(R.color.youcolor);
    int r = Color.red(color);
    int g = Color.green(color);
    int b = Color.blue(color);
于 2014-05-21T20:23:21.847 回答
15

编辑: 这已被接受为答案,但也请查看@johann 的答案,它会让您和那些阅读您的代码的人不那么困惑。

如果您想了解颜色的基本表示,可以从这里开始。

原答案:

getColor()为您提供 ARGB 的颜色int

int color = getResources().getColor(R.color.ItemColor1);
float red   = (color >> 16) & 0xFF;
float green = (color >> 8)  & 0xFF;
float blue  = (color)       & 0xFF;
float alpha = (color >> 24) & 0xFF;
于 2012-05-15T12:10:13.937 回答
4

请看一下

如何从java中的十六进制颜色代码获取RGB值

int color = Integer.parseInt(myColorString, 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;
于 2012-05-15T11:58:07.783 回答
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;

希望它会有用。

于 2017-07-06T10:13:39.837 回答