2011-08-03 30 views
16

这可能是一个愚蠢的问题,但我很惊讶,Paint类没有setColor(Color c)方法。我要做到以下几点:安卓:颜色为INT转换

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

因此,任何简单的方法来Color转换为int

+3

android.graphics.Color是静态方法的集合。它不应该被初始化。你是如何设法做到这一点的? –

+0

你是对的,谢谢,请将其重新发布为答案:) – Caner

回答

39

任何color解析为int简单的2点位置的方法:

1)获取系统颜色

int redColorValue = Color.RED; 

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

int greenColorValue = Color.parseColor("#00ff00") 

必须在上面的代码记住Color类必须android.graphics...

1

R.color.black或者一些颜色有明显的整数。它需要一个RGB值。你可以用你自己喜欢#FF123454代表各个原色

2

在颜色的所有方法和变量静态的。你不能实例化一个Color对象。

Official Color Docs

Color类定义了用于创建和变换颜色整数方法。

颜色被表示为填充整数,4个字节组成:α,红色,绿色,蓝色。

这些值是无法预测的,这意味着任何透明度都只存储在alpha组件中,而不存储在颜色组件中。

部件存储如下(阿尔法< < 24)| (红色< < 16)| (绿色< < 8)|蓝色。

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

因此不透明的黑色将是0xFF000000(100%不透明,但没有从红色,绿色或蓝色的贡献),和乳白色的将是0xFFFFFFFF的

0

涂料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

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