ดังนั้นหากคุณกำลังมองหาจานสีสวย ๆ บางทีมันอาจจะไม่ใช่ไอเดียที่ดีในการใช้ค่าแบบสุ่มทั้งหมด วิธีนี้อาจไม่ได้ผลลัพธ์ที่ดีที่สุด แต่มักจะลงเอยด้วยการเลือกสีที่คล้ายกันซึ่งมืดเกินไปหรือสว่างเกินไป
แนวทางกึ่งสุ่ม:
หากคุณต้องการสีที่สดและมันวาวให้ใช้คลาสง่ายๆต่อไปนี้ที่ฉันเขียนไว้ก่อนหน้านี้เมื่อฉันมีปัญหาเดียวกัน มันsemi-random
และใช้จานสีที่กำหนดไว้ล่วงหน้า:
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;
}
}
แนวทางสุ่ม:
แต่หากคุณยังคงพิจารณาใช้random approach
คุณอาจต้องการใช้บรรทัดเดียวนี้แทนโค้ดหลายบรรทัด:
int color= ((int)(Math.random()*16777215)) | (0xFF << 24);
จุดประสงค์ของการใช้นี้(0xFF << 24)
คือการตั้งค่าอัลฟาเป็นสูงสุดซึ่งหมายถึงความโปร่งใสเป็นศูนย์