Color
Il s'agit d'une classe permettant de manipuler les composantes Rouge, Vert, Bleu et alpha d'une couleur. (cf. les attributs de la couleur au format alpha, rouge, vert et bleu).
Coder une couleur
public static int rgb (int red, int green, int blue): permet de coder une couleur avec les composantes rouge, vert et bleu. Les valeurs des composantes variant entre [0, 255]
public static int argb (int alpha, int red, int green, int blue): même chose que précédemment avec la composante alpha en plus !
public static int parseColor (String colorString): Chaîne de caractères représentant une couleur. L'encodage pourra être:
#RRGGBB #AARRGGBB 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta', 'yellow', 'lightgray', 'darkgray', 'grey', 'lightgrey', 'darkgrey', 'aqua', 'fuschia', 'lime', 'maroon', 'navy', 'olive', 'purple', 'silver', 'teal'
IllegalArgumentException si la couleur n'est pas comprise...
Couleurs prédéfinies
La classe propose des couleurs que vous pourrez utiliser directement (car déjà encodé sous forme FFRRVVBB, donc alpha à FF sauf pour transparent ou alpha à 00):
Il s'agit de constantes:
BLACK
BLUE
CYAN
DKGRAY
GRAY
GREEN
LTGRAY
MAGENTA
RED
TRANSPARENT
WHITE
YELLOW
Décomposer une couleur
La décomposition se fait sur des couleurs codées sur 32 bits soit AARRGGBB.
Le principe est simple, rotation binaire à droite suivant la position binaire de la composante (Début au 24ième bit pour alpha, 16 ième bit pour le rouge, 8 ième pour le vert, 0 ième pour le bleu -- Pas de rotation en fait pour le bleu !) puis une opération logique "et" pour ne garder que le codage 8 bits (FF ou 255) de la composantes (on vire les autres composantes éventuellements toujours présentes après rotation)
public static int alpha(int color) permet de récupérer la composante alpha d'une couleur
public static int red (int color) pour la composante rouge
public static int green (int color) pour la composante verte
public static int blue (int color) pour la composante bleu
Convertir des couleurs
Au cas où, il existe des méthodes de conversions:
Pour convertir du HSV en ARGB
static int HSVToColor(float[] hsv) ou si alpha à positionner: static int HSVToColor(int alpha, float[] hsv)
Et inversement:
RGBToHSV(int red, int green, int blue, float[] hsv)
Ou avec du alpha dans la couleur: colorToHSV(int color, float[] hsv)
Annexes
Stockez les couleurs dans un fichier de ressources ! Cela vous évitera de balayer toutes vos activités pour les modifier plus tard !