首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Android中的颜色是暗的还是浅的

检查Android中的颜色是暗的还是浅的
EN

Stack Overflow用户
提问于 2014-06-17 09:58:09
回答 8查看 23.4K关注 0票数 63

根据标题,我的问题是: Android提供了任何方法来分析/确定颜色(显然是动态的)是浅色还是暗色?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-06-17 10:12:09

Android不提供它,您可以实现一个方法来确定这一点。这里有一个这样做的方法:

代码语言:javascript
复制
public boolean isColorDark(int color){
    double darkness = 1-(0.299*Color.red(color) + 0.587*Color.green(color) + 0.114*Color.blue(color))/255;
    if(darkness<0.5){
        return false; // It's a light color
    }else{
        return true; // It's a dark color
    }
}
票数 124
EN

Stack Overflow用户

发布于 2018-01-15 16:48:37

如果使用支持库v4 (或AndroidX),则可以使用ColorUtils.calculateLuminance(color),它以0.01.0之间浮动的形式返回颜色亮度。

所以你可以做这样的事情:

代码语言:javascript
复制
boolean isDark(int color) {
    return ColorUtils.calculateLuminance(color) < 0.5;
}

请参见:

注意,自从Android 24之后,还有一个方法:Color.luminance(color)

票数 93
EN

Stack Overflow用户

发布于 2017-03-18 06:29:16

代码语言:javascript
复制
public float getLightness(int color) {
    int red   = Color.red(color);
    int green = Color.green(color);
    int blue  = Color.blue(color);

    float hsl[] = new float[3];
    ColorUtils.RGBToHSL(red, green, blue, hsl);
    return hsl[2];
}

人们可以很容易地使用ColorUtils来检查颜色的亮度。

代码语言:javascript
复制
if (getLightness(color) < 0.5f ){
    // This color is too dark!
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24260853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档