我有一个自定义的PieChart视图,现在我正在为for循环中的每个饼设置一个随机颜色
color = Color.argb(100, r.nextInt(256), r.nextInt(256), r.nextInt(256));
pie.addItem(PieName, PieValue, color);
你可以想象我有时会得到奇怪的颜色,或几乎相同的颜色。所以现在我正在考虑使用某些颜色,如何设置一些颜色,如蓝色,绿色,红色,黄色......然后在for循环中使用其中一个颜色?
答案 0 :(得分:2)
您应该创建一个您想要使用的颜色数组(如红绿橙)。
然后生成一个随机数并将其用作关键字以从阵列中获取随机颜色。
如果您不想复制,则必须维护另一个已使用的密钥列表。
Color[] colors = {new Color(255,0,0),new Color(255,255,255),new Color(0,0,255)};
int random = create_random_number(); //pesudo code
Color my_color = colors[random];
以下是创建随机数的示例(用于替换create_random_number):Getting random numbers in Java
答案 1 :(得分:2)
Android中已经有非常有限的调色板(参见here),但即使这些也没有任何类型的收集界面。你有几个选择:
创建要使用的颜色列表,并通过随机偏移访问列表。如果您正在寻找标准颜色集,请尝试like this。代码可能如下所示:
ArrayList<Integer> randColors = new ArrayList<Integer>();
randColors.add(Color.parseColor("#0000FF"));
randColors.add(Color.parseColor("BlanchedAlmond"));
randColors.add(Color.parseColor("MediumAquaMarine"));
以可预测的方式增加颜色。我在Python中使用过一次这段代码,但如果对你有用,你可以轻松转换它:
STEPS = 6
BIG = 0x330000
MED = 0x003300
SMA = 0x000033
count = 1
num = 0x000000
for k in range(0, STEPS):
for j in range(0, STEPS):
for i in range(0, STEPS):
num = ( k * BIG ) + ( j * MED ) + ( i * SMA )
print phex(num)
count += 1
def phex(num):
return "0x%0.6X" % num