tema studio quitar puso pantalla paleta negro esta desactivar como colores celular blanco android colors background

studio - Comprueba si el color es oscuro o claro en Android



paleta de colores android studio (4)

según el título, mi pregunta es: ¿proporciona Android alguna forma de analizar / determinar si un color (que obviamente será dinámico para ese propósito) es claro u oscuro?


Android no lo proporciona, puede implementar un método para determinar esto. Aquí un método para hacer eso:

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 } }


Otra solución:

private static final int BRIGHTNESS_THRESHOLD = 130;

/** * Calculate whether a color is light or dark, based on a commonly known * brightness formula. * * @see {@literal http://en.wikipedia.org/wiki/HSV_color_space%23Lightness} */ public static boolean isColorDark(int color) { return ((30 * Color.red(color) + 59 * Color.green(color) + 11 * Color.blue(color)) / 100) <= BRIGHTNESS_THRESHOLD; }



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]; }

Uno podría usar fácilmente ColorUtils para verificar la claridad de un color.

if (getLightness(color) < 0.5f ){ // This color is too dark! }