web-dev-qa-db-ja.com

ランダムな色を生成するJava

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)が未定義です」と言われるのはなぜですか?これは正しく動作しませんか?

16
ThatGuyThere

nextInt(int n):int を使用して、0〜255のランダムな整数を生成する必要があります。(APIに従って、範囲はColor内でチェックされないことに注意してくださいメソッドなので、自分で制限しないと、無効なカラー値になります)

// 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);
45
hcpl
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);
}

それは役立ちますか?

3
venciallee

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

Color()

コンストラクターはパラメーターを取りません

使用する

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

赤、緑、青のコンポーネントからcolor-intを返します。アルファコンポーネントは暗黙的に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
Raghunandan

Color.rgb()メソッドを利用する

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

ランダムな色を生成します。

1
Nambi

コンストラクター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);

動作するはずですが、動作しない場合はコメントしてください。

1
Cropper