web-dev-qa-db-fra.com

Créer une nouvelle couleur dessinable

J'essaie de convertir une valeur hexadécimale en int afin de pouvoir créer une nouvelle couleur pouvant être dessinée. Je ne sais pas si c'est possible, mais d'après la documentation, cela devrait l'être. Il demande clairement

public ColorDrawable (int color)

Ajoutée dans l'API niveau 1 Crée un nouveau ColorDrawable avec le .__ spécifié. Couleur.

Paramètres color La couleur à dessiner.

Donc, mon code ne fonctionne pas car j'obtiens une erreur Invalid int: "FF6666". Des idées?

int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
58
stacksonstacks

Puisque vous parlez d'hex, vous devez commencer par 0x et n'oubliez pas l'opacité.

Donc en gros: 0xFFFF6666

ColorDrawable cd = new ColorDrawable(0xFFFF6666);

Vous pouvez également créer un nouveau fichier colors.xml dans/res et définir les couleurs comme suit:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="mycolor">#FF6666</color>
</resources>

et obtenez simplement la couleur définie dans R.color.mycolor

getResources().getColor(R.color.mycolor)
127
Enrichman

Pour utiliser ContextCompat et réutiliser la couleur, vous pouvez faire quelque chose comme ceci:

ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
13
JpCrow

Ça devrait être comme ça ...

ColorDrawable cd = new ColorDrawable(0xffff6666);

Remarque j'ai utilisé 8 chiffres hexadécimaux, pas 6 chiffres hexadécimaux. qui ajoute à la transparence

10
CRUSADER

En suivant les conseils ci-dessus, résumez cette question:

  1. ColorDrawable colorDrawable = new ColorDrawable ( Color.parseColor ("# ce9b2c")); `

  2. ColorDrawable colorDrawable = new ColorDrawable ( 0xFFCE9B2C ); Notez qu’il ya 8 chiffres hexadécimaux, et non 6 chiffres hexadécimaux, qui ne fonctionnent pas. Case all

  3. ColorDrawable colorDrawable = new ColorDrawable (ContextCompat.getColor (mContext, R.color.default_color));

Sélection à vous!

4
BertKing

Je pense que vous devez utiliser:

public static int parseColor (String colorString)

Ajouté au niveau 1 de l'API Analyser la chaîne de couleur et renvoyer le color-int correspondant Si la chaîne ne peut pas être analysée, lance un Exception IllegalArgumentException. Les formats pris en charge sont: #RRGGBB #AARRGGBB rouge, bleu, vert, noir, blanc, gris, cyan, magenta, jaune, gris, gris foncé, gris, gris clair, gris foncé, aqua, fuschia, citron vert,. bordeaux, marine, olive, pourpre, argent, sarcelle

4
HpTerm

Voici comment j'ai converti une couleur Hex en int et appliqué à un fond d'une vue

Disons que nous avons une couleur # 8080000.

1) Conversion Hex en int

int myColor = Color.parseColor("#808000");

2) Définir le fond

view.setBackgroundColor(context.getColor(myColor));
0
Rohit Singh