单击按钮时随机排列数组中的颜色

时间:2018-09-16 03:48:21

标签: java android

我尝试单击一次按钮即可自动将颜色随机化。我可以随机显示背景颜色,但是每次必须单击按钮以获得不同的颜色。我试图单击一次按钮,它会自动遍历数组并自动显示颜色。我知道我需要在数组周围进行某种形式的循环,但是我不知道将其放在何处。

private View windowView;
private Button clickMe;
private int[colors];

colors=new int[]{Color.CYAN, Color.GREEN, Color.RED};

for (int i = 0; i < colors.length; i++) {
                Random random = new Random();
                int randomNum = random.nextInt(colorArrayLength);

                windowView.setBackgroundColor(colors[randomNum]);
            }

我不明白为什么这不能遍历整个数组。任何提示和帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

我相信您是随机选择颜色并将其设置在背景中。但是,由于它在循环中,因此变化是如此之快,以至于视觉渲染中的变化并不明显。您需要暂停几毫秒才能看到更改。

您可以尝试以下方法:

const s = 'foo\\nbar\\tbaz';
console.log(JSON.parse('["' + s + '"]')[0]);

答案 1 :(得分:0)

尝试一下对您有帮助

AsyncTask

答案 2 :(得分:0)

您的代码并不是真正地对数组进行随机化,而只是从数组中选择随机颜色。

这有一点区别。将数组随机化意味着数组中每个项目的顺序都会随机化。对此不可能重复。

因此,从阵列中随机选择一种颜色可能使您可以选择相同的颜色。

您正在做的是后者,它正在正确地完成该任务。

因此,您的代码不被视为遍历数组。您只需从数组中选择n次随机颜色,其中n为数组的大小。

此外,您随机选择的颜色不会显示在windowView中,因为这些颜色会立即更改。

例如,您的for循环可能会将windowView更改为CYAN,但是此后立即将其更改为RED。因此,它将仅显示从数组中选择的最后一个随机值,并且不会看到任何先前的颜色变化。

如果要查看更改,则需要在每次随机颜色更改之间添加延迟。

答案 3 :(得分:0)

babylonian是什么?没有这个变数。如下所示的代码可以正常运行。

babylonian

但是,即使这样,视图的背景颜色也是循环后的最后一个颜色,您看不到颜色循环效果的结果。如果要查看颜色更改的过程,可以添加Timer.schedule()方法。