Portanto, se você está procurando uma paleta de cores bonita, talvez não seja uma boa ideia usar valores totalmente aleatórios. Esta abordagem pode não produzir os melhores resultados. Sempre termina com uma seleção de cores semelhantes muito escuras ou muito claras.
Abordagem semi-aleatória:
Se você precisar de algumas cores frescas e brilhantes, use a seguinte classe simples, que escrevi anteriormente quando tive os mesmos problemas. É semi-random
e usa uma paleta de cores predefinida:
class RandomColors {
private Stack<Integer> recycle, colors;
public RandomColors() {
colors = new Stack<>();
recycle =new Stack<>();
recycle.addAll(Arrays.asList(
0xfff44336,0xffe91e63,0xff9c27b0,0xff673ab7,
0xff3f51b5,0xff2196f3,0xff03a9f4,0xff00bcd4,
0xff009688,0xff4caf50,0xff8bc34a,0xffcddc39,
0xffffeb3b,0xffffc107,0xffff9800,0xffff5722,
0xff795548,0xff9e9e9e,0xff607d8b,0xff333333
)
);
}
public int getColor() {
if (colors.size()==0) {
while(!recycle.isEmpty())
colors.push(recycle.pop());
Collections.shuffle(colors);
}
Integer c= colors.pop();
recycle.push(c);
return c;
}
}
Abordagem aleatória:
Mas se você ainda está pensando em usar, random approach
você pode querer usar esta única linha em vez de várias linhas de código:
int color= ((int)(Math.random()*16777215)) | (0xFF << 24);
O objetivo de usar isso (0xFF << 24)
é definir o valor alfa para o máximo que significa transparência zero.