android颜色处理:得到已知颜色的深色或者浅色
LinPalmerst
9年前
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("#", ""));
可以看出其实就是在原有颜色的基础上增加了不透明度。