Quindi, se stai cercando una bella tavolozza di colori, forse non è una grande idea usare valori totalmente casuali. Questo approccio potrebbe non dare i migliori risultati, finisce sempre con una selezione di colori simili che sono troppo scuri o troppo luminosi.
Approccio semi-casuale:
Se hai bisogno di colori freschi e brillanti, usa la seguente semplice classe, che ho scritto in precedenza quando avevo gli stessi problemi. È semi-random
e utilizza una tavolozza di colori predefinita:
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;
}
}
Approccio casuale:
Ma se stai ancora valutando l'uso, random approach
potresti voler usare questa singola riga invece di più righe di codice:
int color= ((int)(Math.random()*16777215)) | (0xFF << 24);
Lo scopo di utilizzare questo (0xFF << 24)
è impostare il valore alfa al massimo che significa trasparenza zero.