【问题标题】:How to Add Random Colors in For Loop如何在 For 循环中添加随机颜色
【发布时间】:2014-01-21 06:38:03
【问题描述】:

我有一个自定义的 PieChart 视图,现在我正在使用

为 for 循环中的每个饼图设置随机颜色
color = Color.argb(100, r.nextInt(256), r.nextInt(256), r.nextInt(256)); 
pie.addItem(PieName, PieValue, color);

你可以想象我有时会得到奇怪的颜色,或者几乎相同的颜色。所以现在我正在考虑使用某些颜色,我怎样才能设置一些颜色,比如蓝色、绿色、红色、黄色......然后在 for 循环中为每个饼图使用其中一种?

【问题讨论】:

    标签: android for-loop


    【解决方案1】:

    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
      

    【讨论】:

      【解决方案2】:

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

      然后生成一个随机数,并用它作为key,从数组中取出一个随机颜色。

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

      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

      【讨论】:

      • 使用颜色数组是指创建一个包含颜色代码的字符串数组吗?如果您不是这个意思,我会查找它并找不到它的示例。
      • Java 不是面向对象的语言,因此您应该将对象存储在数据结构中。像上面这样的一组颜色应该可以解决问题。
      • 不用担心。祝你好运:)
      猜你喜欢
      • 2018-03-18
      • 2022-06-27
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多