Android:Color To Int转换

时间:2011-08-03 12:45:56

标签: android

这可能是一个愚蠢的问题,但我很惊讶Paint类没有setColor(Color c)方法。我想做以下事情:

public void setColor(Color color) {
/* ... */
Paint p = new Paint();
p.setColor(color); // set color takes only int as a paramter :(
/* ... */
}

那么将Color转换为int的任何简单方法都可以吗?

5 个答案:

答案 0 :(得分:65)

任何color解析为int最简单的双向:

1)获取系统颜色

int redColorValue = Color.RED;

2)任何颜色十六进制代码作为字符串参数

int greenColorValue = Color.parseColor("#00ff00")
上述代码Color中的

MUST REMEMBER 必须为android.graphics...

答案 1 :(得分:3)

Color中的所有方法和变量都是静态的。您无法实例化Color对象。

Official Color Docs

  

Color类定义了创建和转换颜色int的方法。

     

颜色表示为压缩整数,由4个字节组成:alpha,red,green,blue。

     

这些值未经过多次修改,这意味着任何透明度都只存储在alpha组件中,而不是存储在颜色组件中。

     

组件存储如下(α<24)| (红色&lt;&lt; 16)| (绿色&lt;&lt; 8)|蓝色。

     

每个组件的范围在0..255之间,0表示对该组件没有贡献,255表示100%贡献。

     

因此,opaque-black将为0xFF000000(100%不透明,但没有来自红色,绿色或蓝色的贡献),而opaque-black将为0xFFFFFFFF

答案 2 :(得分:1)

R.color.black或某些颜色显然是整数。它需要一个RGB值。您可以像#FF123454那样代表各种原色

答案 3 :(得分:0)

我认为它应该是 R.color.black

另请查看Converting android color string in runtime into int

答案 4 :(得分:0)

Paint DOES设置了颜色功能。

/**
 * Set the paint's color. Note that the color is an int containing alpha
 * as well as r,g,b. This 32bit value is not premultiplied, meaning that
 * its alpha can be any value, regardless of the values of r,g,b.
 * See the Color class for more details.
 *
 * @param color The new color (including alpha) to set in the paint.
 */
public native void setColor(@ColorInt int color);

作为Android开发人员,我设置了这样的颜色......

paint.setColor(getResources().getColor(R.color.xxx));

我将color.xml上的颜色值定义为......

<color name="xxx">#008fd2</color>

顺便说一下,如果你想要特定颜色值的十六进制RGB值,那么你可以检查这样的网站:http://www.rapidtables.com/web/color/RGB_Color.htm

我希望这有帮助!享受编码!