生成随机颜色Java

时间:2013-12-13 07:04:51

标签: java android random colors

我试图通过随机数生成器随机生成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)未定义”?这不应该正常吗?

5 个答案:

答案 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);

它应该有效,但如果它不起作用则注释。