Je reçois des valeurs de couleur hexadécimales d'un serveur (sous cette forme #xxxxxx
, par 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 pour leur setBackgroundColor(int color)
fonction, qui prend - comme vous l'avez peut-être 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 sous Android?
valueOf
méthode à deux arguments , où vous spécifiez l'entrée de chaîne (sans le #, bien sûr) et la base, qui spécifie la base.Integer.valueOf(passedColor.substring(1, passedColor.length()), 16)
Cela peut être fait avec n'importe quelle base entière! download.oracle.com/javase/6/docs/api/java/lang/… , int)Réponses:
La vraie réponse est d'utiliser:
Color.parseColor(myPassedColor)
sous Android,myPassedColor
étant lahex
valeur comme#000
ou#000000
ou#00000000
.Cependant, cette fonction ne prend pas en charge les valeurs hexadécimales abrégées telles que
#000
.la source
#000
. Voir la documentation#ccc
. Est-ce qu'il y a un autre moyen?La réponse est vraiment simple, dans Android si vous souhaitez convertir une couleur hexadécimale en int, utilisez simplement la classe Android Color , exemple illustré ci-dessous
c'est pour la couleur gris clair
Color.parseColor("#a8a8a8");
C'est tout et vous obtiendrez votre résultat.
la source
Integer.parseInt(myString.replaceFirst("#", ""), 16)
la source
parseInt
échouera s'il le trouve sur l'entrée.parseColor()
. Vous avez tout à fait raison.J'ai le même problème que celui que j'ai trouvé sous forme de couleur
#AAAAAA
et je veux le convertir en une forme que Android pourrait utiliser. J'ai trouvé que vous pouvez simplement utiliser0xFFAAAAAA
pour qu'Android puisse automatiquement indiquer la couleur. Remarquez que le premierFF
est révélateur de laalpha
valeur. J'espère que cela aidela source
La vraie réponse est la plus simple et la plus simple ...
String white = "#ffffff"; int whiteInt = Color.parseColor(white);
la source
J'étais confronté au même problème. De cette façon, j'ai pu le résoudre. 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 était de changer la couleur du texte du bouton (Button_C) lorsque je change la sélection de couleur de mes préférences (color_prefs).
la source
Sur la base de CQM « s réponse et ovokerie-ogbeta » s réponse à une autre question que je suis venu avec 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);
la source
Obtenez le code de couleur des préférences partagées dans la chaîne, puis convertissez-le en entier et ajoutez une couleur d'arrière-plan de mise en page:
sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE); String sw=sharedPreferences.getString(name, ""); relativeLayout.setBackgroundColor(Color.parseColor(sw));
la source
Essayez ceci, créez un dessin 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 ...
avec la couleur ... "#FFFFFF"
si la couleur est transparente, utilisez ... setAlpha
mView1.setAlpha(x);
avec x float 0-1 Ej (0.9f)Bonne chance
la source