如何在安卓系统中检查亮度?
我有一个颜色整数值。2我想根据颜色的整数值来检查这个颜色是深色还是浅色。
if (checkColor == Color.RED || checkColor == Color.BLACK) {
//set fore color is white
} else {
//set fore color is black
}
字符串
而不是上面的代码,我想改变
if (!isBrightColor(checkColor)) {
//set fore color is white
} else {
//set fore color is black
}
private boolean isBrightColor(int checkColor){
boolean rtnValue;
//How to check this color is bright or dark
return rtnValue;
}
型
3条答案
按热度按时间oiopk7p51#
你应该试试这个……
字符串
参考:Android/Java: Determining if text color will blend in with the background?
cidc1ykv2#
我知道这是一个老问题,但现在有一个
Color.luminance(int)
已经做了选择的答案建议(API 24+)字符串
亮度和亮度之间也有区别:
根据维基百科:
一种更感知相关的替代方案是使用亮度Y′作为亮度维度(图12 d)。亮度是伽马校正的R、G和B的加权平均值,基于它们对感知亮度的贡献,长期用作彩色电视广播中的单色维度。对于sRGB,Rec.709原色产生Y′709,根据Rec.601,数字滤波器使用Y′601,其他一些原色也在使用中,这导致不同的系数。
型
因此,您首先需要了解您想要的实际上是亮度(RGB上R,G和B之和的平均值)还是亮度,这是人眼感知的结果。
为了完整起见,如果你想要实际的亮度,那将是颜色的HSV表示上的V值,所以你可以使用:用途:
型
pdkcd3nj3#
我知道这已经太晚了,但这可能会帮助别人在未来,因为它是更容易和值得信赖的答案:
你可以直接使用java中已经存在的库:
ColorUtils.calculateLuminance()
示例:-
字符串