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

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("#", ""));

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

来自:Android Canvas教程