如何在Java中将颜色代码从浅到深排序

机密文件

我在项目中使用了大约30至40种不同的颜色。我将这些颜色的十六进制代码保存在一个数组中,并将其显示在listview上。当前的列表视图颜色是随机列出的。

但是我想根据它们从白色到黑色的接近程度对这些颜色进行排序。

当前随机的listview链接:

http://tinypic.com/view.php?pic=33ufll3&s=8#.VAiClfmSyXY

我的代码:

public void work(String sub){
       ArrayList<String> colorCodes = new ArrayList<String>();
         ArrayList<String> colorNames = new ArrayList<String>();
         ArrayList<Integer> colors = new ArrayList<Integer>();
         Field [] fields = R.color.class.getDeclaredFields();
         String colorCode;
         String colorName;
         int color;

         final CustomList adapter2 = new CustomList(MainActivity.this,
                    add.colorArray);
         adapter2.clear();
            int number=0;           
            try
            {
                for(int i=0; i<fields.length; i++)
                {                       
                    getResources().getColor(fields[i].getInt(null));

                    colorName = fields[i].getName();
                    colorCode = getResources().getString(fields[i].getInt(null));
                    color = fields[i].getInt(null);
                    System.out.println("COLOR:" +String.valueOf(color));

                    if(fields[i].getName().subSequence(0, 3).equals(sub)){
                    if(!colorCodes.contains(colorCode))
                    {
                        colorCodes.add(colorCode);
                        colorNames.add(colorName);
                        colors.add(color);
                    }            
                }
                }

            }
                catch (Exception ex){}


        number=0;  
        for(int i=0;i<colorCodes.size();i++){


                add.adding(colorCodes.get(i), number+1,colors.get(i));
                number++;     
           }


            add.doCustom(adapter2, (ListView) findViewById(R.id.listView1));
   }
李在宪

我想您将需要两件事:颜色列表(例如List<Color> colors)和根据颜色的深浅比较颜色的某种方式。(请参阅:评估十六进制值是深色还是浅色)。

例如,如果我们仅比较RGB值的总和(可能不足以满足您的目的),则比较顺序将由...确定。

@Override
public int compare(Color c1, Color c2) {
  return Integer.compare(c1.getRed() + c1.getGreen() + c1.getBlue(), c2.getRed() + c2.getGreen() + c2.getBlue());
}

那么实际的排序将只是:

Collections.sort(colors, new Comparator<Color>() {
  @Override
  public int compare(Color c1, Color c2) {
    return Integer.compare(c1.getRed() + c1.getGreen() + c1.getBlue(), c2.getRed() + c2.getGreen() + c2.getBlue());
  }
});

这是基于发光的实现:

    Collections.sort(colors, new Comparator<Color>() {
        @Override
        public int compare(Color c1, Color c2) {
            return Float.compare(((float) c1.getRed() * 0.299f + (float) c1.getGreen() * 0.587f
                    + (float) c1.getBlue() * 0.114f) / 256f, ((float) c2.getRed() * 0.299f + (float) c2.getGreen()
                    * 0.587f + (float) c2.getBlue() * 0.114f) / 256f);
        }
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Matlab中将特定值映射到RGB颜色代码

来自分类Dev

3位颜色代码Java

来自分类Dev

如何使用JSON使用颜色代码

来自分类Dev

如何使ANSI RGB颜色代码加粗?

来自分类Dev

如何启用实时颜色代码更改

来自分类Dev

在vba中将颜色代码设置为图例

来自分类Dev

Android:颜色代码

来自分类Dev

Android:颜色代码

来自分类Dev

电源颜色代码

来自分类Dev

如何在emacs中以任何模式显示ANSI颜色代码?

来自分类Dev

如何在python中使用颜色代码绘制矩阵稀疏模式?

来自分类Dev

如何在Android中以编程方式获取应用图标颜色代码?

来自分类Dev

如何在python中使用颜色代码绘制矩阵稀疏模式?

来自分类Dev

如何在可跨字符串中设置字体颜色代码?

来自分类Dev

如何在内嵌 svgs(谷歌地图)中使用颜色代码

来自分类Dev

如何使Vim显示颜色代码所指示的颜色?

来自分类Dev

tset setaf颜色表?如何确定颜色代码?

来自分类Dev

如何从颜色代码中找到颜色的名称

来自分类Dev

运行“播放”命令时如何关闭颜色代码?

来自分类Dev

什么是Kivy颜色代码,它们如何工作?

来自分类Dev

如何从LinearSegmentedColormap获取所有颜色代码?

来自分类Dev

如何使任何html颜色代码半透明[Android]

来自分类Dev

android中的int颜色代码如何工作?

来自分类Dev

如何使用grep输入保留颜色代码?

来自分类Dev

运行“播放”命令时如何关闭颜色代码?

来自分类Dev

如何将十六进制颜色代码相乘?

来自分类Dev

如何使用php更改css颜色代码永久

来自分类Dev

如何找到“LaunchScreen.storyboard”的背景颜色代码?

来自分类Dev

更改颜色代码无效

Related 相关文章

热门标签

归档