Paint.setColor
attend un entier. Mais ce que j'ai est un objet Color
. Je ne vois pas de color.getIntValue()
en Java? Alors, comment je fais ça? Ce que je veux c'est quelque chose comme
public Something myMethod(Color rgb){
myPaint.setColor(rgb.getIntValue());
...
}
Correction: Android.graphics.Color;
Je pensais qu'avoir Android
comme une des balises suffirait. Mais apparemment pas.
Tout d’abord, Android.graphics.Color est une classe composée uniquement de méthodes statiques. Comment et pourquoi avez-vous créé un nouvel objet Android.graphics.Color? (Ceci est complètement inutile et l'objet lui-même ne stocke aucune donnée)
Mais de toute façon ... je vais supposer que vous utilisez un objet qui stocke réellement des données ...
Un entier est composé de 4 octets (en Java). En regardant la fonction getRGB () de l'objet Java Color standard, nous pouvons voir que Java associe chaque couleur à un octet de l'entier dans l'ordre ARGB (alpha-rouge-vert-bleu). Nous pouvons répliquer ce comportement avec une méthode personnalisée comme suit:
public int getIntFromColor(int Red, int Green, int Blue){
Red = (Red << 16) & 0x00FF0000; //Shift red 16-bits and mask out other stuff
Green = (Green << 8) & 0x0000FF00; //Shift Green 8-bits and mask out other stuff
Blue = Blue & 0x000000FF; //Mask out anything not blue.
return 0xFF000000 | Red | Green | Blue; //0xFF000000 for 100% Alpha. Bitwise OR everything together.
}
Cela suppose que vous puissiez récupérer les différentes composantes de couleur rouge, verte et bleue et que toutes les valeurs que vous avez transmises pour les couleurs sont comprises entre 0 et 255.
Si vos valeurs RVB sont sous la forme d’un pourcentage de flottement compris entre 0 et 1, envisagez la méthode suivante:
public int getIntFromColor(float Red, float Green, float Blue){
int R = Math.round(255 * Red);
int G = Math.round(255 * Green);
int B = Math.round(255 * Blue);
R = (R << 16) & 0x00FF0000;
G = (G << 8) & 0x0000FF00;
B = B & 0x000000FF;
return 0xFF000000 | R | G | B;
}
Comme d'autres l'ont déjà dit, si vous utilisez un objet Java standard, utilisez simplement getRGB ();
Si vous décidez d'utiliser correctement la classe de couleurs Android, vous pouvez également effectuer les tâches suivantes:
int RGB = Android.graphics.Color.argb(255, Red, Green, Blue); //Where Red, Green, Blue are the RGB components. The number 255 is for 100% Alpha
ou
int RGB = Android.graphics.Color.rgb(Red, Green, Blue); //Where Red, Green, Blue are the RGB components.
comme d'autres l'ont dit ... (la deuxième fonction suppose 100% d'alpha)
Les deux méthodes font fondamentalement la même chose que la première méthode créée ci-dessus.
Si vous développez pour Android, la méthode de Color pour cela est rgb (int, int, int)
Donc, vous feriez quelque chose comme
myPaint.setColor(Color.rgb(int, int, int));
Pour récupérer les valeurs de couleur individuelles, vous pouvez utiliser les méthodes suivantes:
Color.red(int color)
Color.blue(int color)
Color.green(int color)
Reportez-vous à ce document pour plus d'informations
Color
a une méthode getRGB () qui renvoie la couleur sous la forme int
.
Vous voulez utiliser intvalue = Color.parseColor("#" + colorobject);
int color = (A & 0xff) << 24 | (R & 0xff) << 16 | (G & 0xff) << 8 | (B & 0xff);
Vous pouvez déclarer une valeur dans color.xml et obtenir ainsi une valeur entière en appelant le code ci-dessous.
context.getColor(int resId);