关于android:如何在For循环中添加随机颜色

How to Add Random Colors in For Loop

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

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

你可以想象我有时会有奇怪的颜色,或者几乎相同的颜色。所以现在我在考虑使用某些颜色,我如何设置一些颜色,如蓝色,绿色,红色,黄色…然后对循环中的每个馅饼使用它们中的一个?


Android中已经有非常有限的调色板(请参见此处),但即使这些调色板也缺少任何类型的收集界面。您有几个选择:

  • 创建要使用的颜色列表,并通过随机偏移访问该列表。如果你正在寻找一个标准的颜色集,请尝试这样的方法。代码可能如下所示:

    1
    2
    3
    4
    5
        ArrayList<Integer> randColors = new ArrayList<Integer>();
        randColors.add(Color.parseColor("#0000FF"));

        randColors.add(Color.parseColor("BlanchedAlmond"));
        randColors.add(Color.parseColor("MediumAquaMarine"));

  • 以可预测的方式增加颜色。我在python中做过一次这个代码,但是如果它对您有用的话,您可以很容易地转换它:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        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

  • 您应该创建一个要使用的颜色数组(如红-绿-橙色)。

    然后生成一个随机数,并将其用作从数组中获取随机颜色的键。

    如果您不想重复,您必须维护已经使用过的密钥的另一个列表。

    1
    2
    3
    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];

    下面是创建一个随机数的例子(使用CeaTyRead RoopyNo.in):在爪哇中获得随机数