0

私は子供向けのアプリに取り組んでいます.ボタンの背景がランダムに変化する必要があります...私が指定した特定の色で。ユーザーがボタンをクリックすると、その時点での色の名前が表示されます。

例: クリックした色: RED

私はランダム関数の使用を知っていますが、この関数を変更して、選択した色を表示する方法を知っています。

Random rnd = new Random(); 
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));   
view.setBackgroundColor(color);

カラーリスト:

<color name="bright_pink">#FF007F</color>
<color name="red">#FF0000</color>
<color name="orange">#FF7F00</color>
<color name="yellow">#FFFF00</color>
<color name="chartreuse">#7FFF00</color>
<color name="green">#00FF00</color>
<color name="spring_green">#00FF7F</color>
<color name="cyan">#00FFFF</color>
<color name="azure">#007FFF</color>
<color name="blue">#0000FF</color>
<color name="violet">#7F00FF</color>
<color name="magenta">#FF00FF</color>

上記の色のみを使用するようにランダム関数を強制する方法。

4

4 に答える 4

1

カラー コードの配列を作成し、それを使用して任意のカラー コードをランダムに選択してみませんか。または、リソース ファイルに配列を作成する場合は、その方法を使用することもできます。

色.xml

<resources>
    <string-array name="colors">        
        <item>#ff0000</item>
        <item>#00ff00</item>  
        <item>#0000ff</item>
    </string-array>
</resources>

アクティビティ クラスのコード。

String[] allColors = context.getResources().getStringArray(R.array.colors);

Color.parseColor(allColors[0]) // red
Color.parseColor(allColors[1]) // green
Color.parseColor(allColors[2]) // blue
于 2013-09-24T06:31:18.083 に答える
1

ランダム化する色の配列を作成します。

<resources>
    <string-array name="color_names">
        <item>red</item>
        <item>green</item>
        ...
    </string-array>
</resources>

ランダムな色を取得する

Random random = new Random();
String[] colorArray = context.getResources().getStringArray(R.array.color_names); 
String randomColorName = colorArray[random.nextint(colorArray.length())];
String randomColorResource = "R.color." + randomColorName;

ボタンの色を設定します。

findViewById(R.id.myButton).setBackgroundColor(randomColorResource);

色の名前でトーストメッセージを作成します。

Toast.makeText(getApplicationContext(), 
               randomColorName, 
               Toast.LENGTH_SHORT).show();
于 2013-09-24T07:01:58.800 に答える
0

こうすれば

Field[] fields = R.color.class.getDeclaredFields(); 

    int[] colors = new int[fields.length]; // Make this variable global

    try {
        for (int i = 0; i < fields.length; i++) {
            colors[i] = fields[i].getInt(null);
        }
    } catch (Exception ex) {
    }


    int color = colors[new Random().nextInt(colors.length-1)];
    view.setBackgroundColor(color);
于 2013-09-24T06:33:33.477 に答える