我试图通过随机数生成器随机生成R,G和B值的数字并使用这些值来生成颜色来创建随机颜色。以下代码位于我的onCreate()
方法中:
Random rand = new Random();
// Java 'Color' class takes 3 floats, from 0 to 1.
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
Color randomColor = new Color(r, g, b);
为什么eclipse告诉我“构造函数Color(float, float, float)
未定义”?这不应该正常吗?
答案 0 :(得分:43)
你应该使用nextInt(int n):int生成0到255之间的随机整数。(请注意,根据API,颜色方法中没有检查范围,所以如果你不自己限制它'' ll最终会出现无效的颜色值)
// generate the random integers for r, g and b value
Random rand = new Random();
int r = rand.nextInt(255);
int g = rand.nextInt(255);
int b = rand.nextInt(255);
然后使用静态Color.rgb(r,g,b):int方法获取int颜色值。 android.graphics.Color
存在的唯一构造函数是非参数构造函数。
int randomColor = Color.rgb(r,g,b);
最后,作为示例,使用setBackgroundColor(int c):void方法为视图设置颜色背景。
View someView.setBackgroundColor(randomColor);
答案 1 :(得分:3)
public int randomColor(int alpha) {
int r = (int) (0xff * Math.random());
int g = (int) (0xff * Math.random());
int b = (int) (0xff * Math.random());
return Color.argb(alpha, r, g, b);
}
有帮助吗?
答案 2 :(得分:3)
http://developer.android.com/reference/android/graphics/Color.html
Color()
构造函数不接受任何参数
使用
public static int rgb (int red, int green, int blue)
从红色,绿色,蓝色组件返回color-int。 alpha分量是重要的255(完全不透明)。这些组件值应为[0..255],但没有执行范围检查,因此如果它们超出范围,则返回的颜色未定义。
参数 红色红色成分[0..255]的颜色 绿色绿色成分[0..255]的颜色 蓝色蓝色组件[0..255]的颜色
使用
Random rand = new Random();
int r = rand.nextInt(255);
...// rest of the code
int randomcolor = Color.rgb(r,g,b); // takes int as param
答案 3 :(得分:1)
使用 Color.rgb()方法
Color.rgb((randval)r,(randval)g,(randval)b);
生成随机颜色。
答案 4 :(得分:1)
如果构造函数Color(float,float,float)未定义,则将其转换为int,如。
Random rand = new Random();
// Java 'Color' class takes 3 floats, from 0 to 1.
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
int Red = Integer.parseInt(String.valueOf(r));
int Green= Integer.parseInt(String.valueOf(g));
int Blue= Integer.parseInt(String.valueOf(b));
Color randomColor = new Color(Red , Green, Blue);
但是,如果不能正常工作,不知道它是否有效,请尝试以下方法:
Random rand = new Random();
int r = rand.nextInt(255);
int g = rand.nextInt(255);
int b = rand.nextInt(255);
Color randomColor = new Color(r, g, b);
它应该有效,但如果它不起作用则注释。