如何在For循环中添加随机颜色

时间:2014-01-03 14:48:40

标签: android for-loop

我有一个自定义的PieChart视图,现在我正在为for循环中的每个饼设置一个随机颜色

color = Color.argb(100, r.nextInt(256), r.nextInt(256), r.nextInt(256)); 
pie.addItem(PieName, PieValue, color);

你可以想象我有时会得到奇怪的颜色,或几乎相同的颜色。所以现在我正在考虑使用某些颜色,如何设置一些颜色,如蓝色,绿色,红色,黄色......然后在for循环中使用其中一个颜色?

2 个答案:

答案 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),但即使这些也没有任何类型的收集界面。你有几个选择:

  1. 创建要使用的颜色列表,并通过随机偏移访问列表。如果您正在寻找标准颜色集,请尝试like this。代码可能如下所示:

        ArrayList<Integer> randColors = new ArrayList<Integer>();
        randColors.add(Color.parseColor("#0000FF"));
    
        randColors.add(Color.parseColor("BlanchedAlmond"));
        randColors.add(Color.parseColor("MediumAquaMarine"));
    
  2. 以可预测的方式增加颜色。我在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