我尝试单击一次按钮即可自动将颜色随机化。我可以随机显示背景颜色,但是每次必须单击按钮以获得不同的颜色。我试图单击一次按钮,它会自动遍历数组并自动显示颜色。我知道我需要在数组周围进行某种形式的循环,但是我不知道将其放在何处。
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]);
}
我不明白为什么这不能遍历整个数组。任何提示和帮助将不胜感激。
答案 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()方法。