Vì vậy, nếu bạn đang tìm kiếm một bảng màu đẹp, có lẽ đó không phải là một ý tưởng tuyệt vời để sử dụng các giá trị hoàn toàn ngẫu nhiên. Cách tiếp cận này có thể không mang lại kết quả tốt nhất, Nó luôn dẫn đến việc lựa chọn các màu tương tự như quá tối hoặc quá sáng.
Cách tiếp cận bán ngẫu nhiên:
Nếu bạn cần một số màu sắc tươi và sáng bóng thì hãy sử dụng lớp đơn giản sau mà tôi đã viết trước đây khi gặp vấn đề tương tự. Nó semi-random
và sử dụng một bảng màu được xác định trước:
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;
}
}
Cách tiếp cận ngẫu nhiên:
Nhưng nếu bạn vẫn đang cân nhắc sử dụng, random approach
bạn có thể muốn sử dụng một dòng duy nhất này thay vì nhiều dòng mã:
int color= ((int)(Math.random()*16777215)) | (0xFF << 24);
Mục đích của việc sử dụng này (0xFF << 24)
là đặt giá trị alpha ở mức tối đa có nghĩa là độ trong suốt bằng không.