这可能是一个愚蠢的问题,但我很惊讶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
的任何简单方法都可以吗?
答案 0 :(得分:65)
任何color
解析为int
最简单的双向:
1)获取系统颜色
int redColorValue = Color.RED;
2)任何颜色十六进制代码作为字符串参数
int greenColorValue = Color.parseColor("#00ff00")
上述代码Color
中的 MUST REMEMBER 必须为android.graphics...
!
答案 1 :(得分:3)
Color中的所有方法和变量都是静态的。您无法实例化Color对象。
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
答案 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
我希望这有帮助!享受编码!