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

创建要随机化的颜色数组。

<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 消息。

Toast.makeText(getApplicationContext(), 
               randomColorName, 
               Toast.LENGTH_SHORT).show();
于 2013-09-24T07:01:58.800 回答
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 回答
0

这可能会对您有所帮助。

创建一个颜色列表。

List<String> colors = new ArrayList<>();

colors.add("#00ff00"); //eg.Blue
colors.add("#ff0000"); // ...
colors.add("#ff00ff");
...

获取Random对象。

Random random = new Random(0);

现在获取在列表大小范围内生成的随机值。

int generatedRandomNum = random.nextInt(colors.size());

现在获取随机颜色并将其设置为视图。

view.setBackgroundColor(Color.parseColor(colors.get(generatedRandomNum)));

基于generatedRandomNum(即数组的位置)Toast 您已经记下的颜色名称,例如蓝色。

注意:Random可能会在一个序列中生成相同的数字。要了解更多关于随机检查信息。如果您不想重复相同的值,则应在其后面添加更多逻辑。

于 2013-09-24T07:16:21.567 回答
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 回答