我有五种颜色保存在一个数组中:
int[] colors=new int[]{Color.red,Color.black,Color.blue,Color.gray,Color.green};
现在我有很多项目,我希望为每个项目提供随机颜色,但有两个要求:
1从阵列中选择颜色缪斯
2一个项目的颜色与旁边的颜色不同。
int[] colors = getResources().getIntArray(R.array.category_color_array);
ArrayList<Integer> cs = new ArrayList<Integer>();
for (int k = 0; k < items.size(); k++) {
if (k <= colors.length - 1) {
cs.add(colors[k]);
} else {
cs.add(colors[k - colors.length]);
}
}
Collections.shuffle(cs);
for (int i = 0; i < items.size(); i++) {
items.get(i).color = cs.get(i);
}
cs.clear();
但我总是得到两个项目的重复颜色,如何解决?
顺便说一下,我的应用程序将运行在Andriod上,因此应该考虑性能。答案 0 :(得分:1)
你可以为位置i选择随机颜色,其中cs [i]!= cs [i - 1]
ArrayList<Integer> cs = new ArrayList<Integer>();
// assume we have 15 item
for (int k = 0; k < items.size(); k++) {
int color = gerRandomColor(colors);
//System.out.println(rand);
while(k > 0 && color == cs.get(k - 1)){
color = gerRandomColor(colors);
}
cs.add(color);
}