我希望改变任何给定颜色的亮度(注意:我不是在谈论屏幕亮度),我查看了Color类,它有一些方法用于RGB和HSV之间的转换,我在这个领域是新手。首先,如果红色的值以RGB(#FF0000)指定,我该如何改变其亮度?
首先,您需要记住两件事 -
Color.colorToHSV
将颜色转换为HSV,然后更改HSV颜色的亮度,最后使用Color.HSVToColor
将其转换回颜色int。例如,以下代码将亮度设置为0.5:@ColorInt int originalColor = /*your original color*/;
float[] hsv = new float[3]; //Create an array to pass to the colorToHSV function
Color.colorToHSV(originalColor, hsv); //Put the HSV components in the array created above
hsv[2] = 0.5f; //Whatever brightness you want to set. 0 is black, 1 is the pure color.
@ColorInt int newColor = Color.HSVToColor(hsv); //Convert it back to a ColorInt
ColorUtils.colorToHSL()
和ColorUtils.HSLToColor()
进行转换。 - sulai