web-dev-qa-db-fra.com

Convertit la valeur de couleur hexadécimale (#ffffff) en valeur entière

Je reçois des valeurs de couleur hexadécimales d'un serveur (sous cette forme, #xxxxxx, Exemple #000000 Pour le noir)

Comment puis-je convertir cela en une valeur entière?

J'ai essayé de faire Integer.valueOf("0x" + passedColor.substring(1, passedColor.length())) pour obtenir un résultat encore plus hextastique 0x000000, Mais ce n'est pas interprété comme un int ici, d'autres suggestions?

Je reçois une erreur: 08-03 21:06:24.673: ERROR/AndroidRuntime(20231): Java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer

J'utilise le SDK Android SDK) pour leur fonction setBackgroundColor(int color), qui prend - comme vous l'avez peut-être deviné - une valeur de couleur entière.

Voici l’OPPOSITE de cette question: Comment convertir un entier de couleur en une chaîne hexadécimale sous Android?

73
CQM

La vraie réponse est d'utiliser:

Color.parseColor(myPassedColor) sous Android, myPassedColor étant la valeur hex comme #000 ou #000000 ou #00000000.

Cependant, cette fonction ne supporte pas les valeurs hexadécimales abrégées comme #000.

164
CQM
Integer.parseInt(myString.replaceFirst("#", ""), 16) 
13
Mike Samuel

La réponse est vraiment simple, en Android si vous voulez convertir une couleur hexadécimale en int, utilisez simplement Android Couleur classe, exemple montré ci-dessous

c'est pour la couleur gris clair

Color.parseColor("#a8a8a8");

C'est ça et vous obtiendrez votre résultat.

12
Ashana.Jackol

J'ai le même problème que j'ai trouvé de la couleur sous la forme de #AAAAAA et je veux convertir cela en une forme que Android pourrait utiliser. J'ai découvert que vous pouvez simplement utiliser 0xFFAAAAAA pour que Android puisse automatiquement indiquer la couleur. Notez que le premier FF indique la valeur alpha. J'espère que cela vous aidera

6
Fei

Je faisais face au même problème. De cette façon, j'ai pu le résoudre. Comme CQM l'a dit, l'utilisation de Color.parseColor () est une bonne solution à ce problème.

Voici le code que j'ai utilisé:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

Dans ce cas, mon objectif était de changer la couleur du texte du bouton (Button_C) lorsque je modifiais la sélection de couleur à partir de mes préférences (color_prefs).

2
RunningWheels

La vraie réponse est la plus simple et la plus facile ....

String white = "#ffffff";
int whiteInt = Color.parseColor(white);
2
user7294802

Basé sur les CQM réponse et sur ovokerie-ogbetaréponse à une autre question J'ai trouvé cette solution:

if (colorAsString.length() == 4) { // #XXX
    colorAsString = colorAsString.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3");
}

int color = Color.parseColor(colorAsString);
0
MikeL

Essayez ceci, créez drawable dans votre ressource ...

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <solid Android:color="@color/white"/>
    <size Android:height="20dp"
        Android:width="20dp"/>
</shape>

puis utilisez ...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

avec la couleur ... "#FFFFFF"

si la couleur est transparente, utilisez ... setAlpha

mView1.setAlpha(x); avec x float 0-1 Ej (0.9f)

Bonne chance

0
Gaston Cufre