112 votes

Convertir la valeur hexagonale de la couleur ( #ffffff ) en valeur entière

Je reçois des valeurs de couleurs hexagonales d'un serveur (sous cette forme), #xxxxxx exemple #000000 pour le noir)

Comment convertir cette valeur en un nombre entier ?

J'ai essayé de faire Integer.valueOf("0x" + passedColor.substring(1, passedColor.length())) pour obtenir une image encore plus hextastique 0x000000 mais ce résultat n'est pas interprété comme un int 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 pour leur setBackgroundColor(int color) qui prend - comme vous l'avez deviné - une valeur de couleur entière.

C'est l'OPPOSÉ de cette question : Comment convertir un entier de couleur en chaîne hexadécimale dans Android ?

4voto

ALEXANDER LOZANO Points 120

Si vous pouvez passer les valeurs en tant que const statique, vous pouvez convertir la valeur hexagonale en Android (Android.graphics.Color) en utilisant ce convertisseur en ligne et mettre la référence de la couleur dans le const, c'est-à-dire : le convertisseur de couleur me donne cette valeur pour cette couleur #EE5670 = 0xFFEE5670.

static const Color redColor = const Color(0xFFEE5670);

https://convertingcolors.com/hex-color-EE5670.html?search=#EE5670

3voto

RunningWheels Points 21

J'ai rencontré le même problème. J'ai pu le résoudre de cette manière. Comme l'a dit CQM, 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 est de modifier la couleur du texte du bouton (Button_C) lorsque je modifie la sélection de couleurs dans mes préférences (color_prefs).

2voto

MikeL Points 740

Sur la base de CQM 's répondre et sur ovokerie-ogbeta 's ré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);

1voto

Choudry Zaman Points 11

Obtenir le code couleur des préférences partagées dans une chaîne de caractères, puis le convertir en nombre entier et ajouter la couleur d'arrière-plan de la mise en page :

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));

0voto

Gaston Cufre Points 1

Essayez ceci, créez un objet à dessiner 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 utiliser...

 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, utiliser... setAlpha

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

Bonne chance

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X