android颜色处理:得到已知颜色的深色或者浅色

LinPalmerst 8年前

 android的颜色处理在2d绘图的时候有可能用到,刚好碰到需要根据已知颜色获得其相应深色或者浅色的情况,我知道的有两种方法。

第一种:将color转换成hsv颜色空间改变hsv的值,再转换成int类型的color值:

转换成深色:

public int getDarkerColor(int color){      float[] hsv = new float[3];      Color.colorToHSV(color, hsv); // convert to hsv      // make darker      hsv[1] = hsv[1] + 0.1f; // more saturation      hsv[2] = hsv[2] - 0.1f; // less brightness      int darkerColor = Color.HSVToColor(hsv);      return  darkerColor ;  }

转换成浅色:

public int getBrighterColor(int color){        float[] hsv = new float[3];        Color.colorToHSV(color, hsv); // convert to hsv                                                                   hsv[1] = hsv[1] - 0.1f; // less saturation        hsv[2] = hsv[2] + 0.1f; // more brightness        int darkerColor = Color.HSVToColor(hsv);        return  darkerColor ;    }

第二种简单,但是感觉不太科学,而且只能转换成更浅的颜色:

int newColor = Color.parseColor("#0E" + oldColor.replace("#", ""));

 

可以看出其实就是在原有颜色的基础上增加了不透明度。