2013-12-13 3 views
14

Я пытаюсь создать случайный цвет, произвольно генерируя числа для значений R, G и B с генератором случайных чисел и используя значения для создания цвета. Следующий код в моем onCreate() метод:Создать случайный цвет Java

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

Как же затмение говорит мне «Конструктор Color(float, float, float) не определен»? Не должно ли это работать правильно?

+0

Вы правильно импортировали его? –

+2

Убедитесь, что вы объявляете «java.awt.Color»: http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html. «android.graphics.Color», с другой стороны, не имеет конструктора с float rgb: http://developer.android.com/reference/android/graphics/Color.html#rgb%28int – paulsm4

+0

Похоже, eclipse auto -импортированный "android.graphics.Color". Я сделал им импорт «java.awt.Color», и теперь он работает. Спасибо – ThatGuyThere

ответ

37

Чтобы создать случайное целое число от 0 до 255. (обратите внимание, что в соответствии с API диапазон не проверяется в методах цвета, поэтому, значения цвета)

// 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 методом. Единственный конструктор, который существует для android.graphics.Color, является конструктором без аргументов.

int randomColor = Color.rgb(r,g,b); 

Наконец, в качестве примера, используют метод setBackgroundColor(int c):void, чтобы установить цвет фона на вид.

View someView.setBackgroundColor(randomColor); 
+0

'public static int rgb' return type is' int' – Raghunandan

+1

действительно исправил это и добавил дополнительную информацию о том, как использовать значение цвета int для установки цвета фона для просмотра, например. – hcpl

+0

сообщение выглядит более полным сейчас. – Raghunandan

1

Makeuse из Color.rgb() метод

Color.rgb((randval)r,(randval)g,(randval)b); 

, чтобы генерировать случайный цвет.

+0

Спасибо. Проблема была на самом деле с моим импортом, но это отличный подход. – ThatGuyThere

+0

@ThatGuyThere спасибо .. – Nambi

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); 
} 

не может это помочь?

+0

Помог мне. Спасибо. – statosdotcom

3

http://developer.android.com/reference/android/graphics/Color.html

Color()

Конструктор не принимает любые Params

Использование

public static int rgb (int red, int green, int blue)

Возврат цвет-ИНТ из красного, зеленого, синего компоненты. Альфа-компонент - это импликация 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 
1

Если конструктор Color (float, float, float) не определен, чем преобразовать его в int like.

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

Она должна работать корректно, но если он не работает, то комментарии.

Смежные вопросы