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教程