我正在为孩子们开发应用程序.. 我需要一个按钮背景随机改变...用我给出的特定颜色。 当用户点击按钮时,吐司会显示当时的颜色名称。
示例:您点击了颜色: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>
如何强制随机函数仅使用上面的颜色。
答案 0 :(得分:1)
为什么不创建颜色代码数组并使用它来选择您选择的随机颜色代码。或者,如果您想在资源文件中创建一个数组,那么您也可以采用这种方法。
colors.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
答案 1 :(得分: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();
答案 2 :(得分: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);
答案 3 :(得分: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
可能会在序列中生成相同的数字。要了解有关随机检查的更多信息this。如果你不想重复相同的值,你应该在它背后添加一些逻辑。