wake-up-neo.net

Erstellen Sie eine neue Farbe, die gezeichnet werden kann

Ich versuche, einen Hex-Wert in ein Int zu konvertieren, damit ich eine neue Farbe zeichnen kann. Ich bin nicht sicher, ob dies möglich ist, aber laut Dokumentation sollte es auch so sein. Es verlangt einfach nach

public ColorDrawable (int color)

Hinzugefügt in API Level 1 Erstellt eine neue ColorDrawable mit der angegebenen Farbe.

Parameter color Die zu zeichnende Farbe.

Mein Code funktioniert also nicht, weil ich den Fehler "Invalid int:" FF6666 "erhalte. Irgendwelche Ideen?

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

Da Sie von Hex sprechen, müssen Sie mit 0x beginnen und die Deckkraft nicht vergessen.

Also im Grunde: 0xFFFF6666

ColorDrawable cd = new ColorDrawable(0xFFFF6666);

Sie können auch eine neue colors.xml-Datei in/res erstellen und die Farben wie folgt definieren:

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

und erhalten Sie einfach die in R.color.mycolor definierte Farbe

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

Für die Verwendung mit ContextCompat und Wiederverwenden der Farbe können Sie Folgendes tun:

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

Es sollte so sein ...

ColorDrawable cd = new ColorDrawable(0xffff6666);

Hinweis Ich habe 8 hexadezimale Ziffern verwendet, nicht 6 hexadezimale Ziffern. die zur Transparenz beitragen

10
CRUSADER

Durch Befolgung des obigen Hinweises eine Zusammenfassung dieser Frage sein:

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

  2. ColorDrawable colorDrawable = neue ColorDrawable ( 0xFFCE9B2C ); Beachten Sie, dass es 8 Hexadezimalstellen gibt, nicht 6 Hexadezimalstellen. Fall alle

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

Wähle dich aus!

4
BertKing

Ich denke du musst benutzen:

public static int parseColor (String colorString)

Hinzugefügt in API-Ebene 1 Analysieren Sie die Farbzeichenfolge und geben Sie .__ zurück. entsprechendes color-int. Wenn die Zeichenfolge nicht analysiert werden kann, wirft ein IllegalArgumentException-Ausnahme. Unterstützte Formate sind: #RRGGBB #AARRGGBB Rot, Blau, Grün, Schwarz, Weiß, Grau, Cyan, Magenta, Gelb, Hellgrau, Dunkelgrau, Grau, Hellgrau, Dunkelgrau, Aqua, Fuschia, Lime,. kastanienbraun, navy, oliv, lila, silber, türkis

4
HpTerm

So habe ich eine Hex-Farbe in int konvertiert und auf einen Hintergrund angewendet. einer Ansicht

Nehmen wir an, wir haben eine Farbe # 8080000.

1) Umwandlung von Hex in Int

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

2) Hintergrund einstellen

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