Cot*_*nyo 13 java android paint colors android-layout
Paint.setColor期待一个整数.但我拥有的是一个Color对象.我color.getIntValue()在Java 中看不到?那我该怎么做?我想要的是类似的东西
public Something myMethod(Color rgb){
myPaint.setColor(rgb.getIntValue());
...
}
Run Code Online (Sandbox Code Playgroud)
更正:android.graphics.Color;我认为有android一个标签就足够了.但显然不是.
ini*_*mfs 40
首先,android.graphics.Color是一个仅由静态方法组成的类.你是如何以及为什么创建一个新的android.graphics.Color对象?(这完全没用,对象本身不存储数据)
但无论如何......我将假设你使用一些实际存储数据的对象......
整数由4个字节组成(在java中).查看标准java Color对象中的函数getRGB(),我们可以看到java将每种颜色映射到整数的一个字节,顺序为ARGB(Alpha-Red-Green-Blue).我们可以使用自定义方法复制此行为,如下所示:
public int getIntFromColor(int Red, int Green, int Blue){
Red = (Red << 16) & 0x00FF0000; //Shift red 16-bits and mask out other stuff
Green = (Green << 8) & 0x0000FF00; //Shift Green 8-bits and mask out other stuff
Blue = Blue & 0x000000FF; //Mask out anything not blue.
return 0xFF000000 | Red | Green | Blue; //0xFF000000 for 100% Alpha. Bitwise OR everything together.
}
Run Code Online (Sandbox Code Playgroud)
这假设您可以以某种方式检索单独的红色,绿色和蓝色组件,并且您传递的颜色的所有值都是0-255.
如果您的RGB值采用0到1之间的浮动百分比形式,请考虑以下方法:
public int getIntFromColor(float Red, float Green, float Blue){
int R = Math.round(255 * Red);
int G = Math.round(255 * Green);
int B = Math.round(255 * Blue);
R = (R << 16) & 0x00FF0000;
G = (G << 8) & 0x0000FF00;
B = B & 0x000000FF;
return 0xFF000000 | R | G | B;
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所说,如果你使用的是标准的java对象,只需使用getRGB();
如果你决定正确使用android颜色类,你也可以这样做:
int RGB = android.graphics.Color.argb(255, Red, Green, Blue); //Where Red, Green, Blue are the RGB components. The number 255 is for 100% Alpha
Run Code Online (Sandbox Code Playgroud)
要么
int RGB = android.graphics.Color.rgb(Red, Green, Blue); //Where Red, Green, Blue are the RGB components.
Run Code Online (Sandbox Code Playgroud)
正如其他人所说......(第二功能假定为100%alpha)
两种方法基本上与上面创建的第一种方法做同样的事情.
小智 19
如果您正在为Android开发,Color的方法是rgb(int,int,int)
所以你会做类似的事情
myPaint.setColor(Color.rgb(int, int, int));
Run Code Online (Sandbox Code Playgroud)
要检索单个颜色值,您可以使用以下方法:
Color.red(int color)
Color.blue(int color)
Color.green(int color)
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此文档