Ich versuche, einen Hex-Wert in einen Int-Wert umzuwandeln, damit ich eine neue Farbe zum Zeichnen erstellen kann. Ich bin mir nicht sicher, ob dies möglich ist, aber laut Dokumentation sollte es so sein. Es fragt eindeutig nach
public ColorDrawable (int color)
In API-Ebene 1 hinzugefügt Erstellt ein neues ColorDrawable mit der angegebenen Farbe.
Parameter Farbe Die zu zeichnende Farbe.
Mein Code funktioniert also nicht, weil ich einen ungültigen int: "FF6666" -Fehler erhalte. Irgendwelche Ideen?
int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);
java
android
android-drawable
colordrawable
Stacksonstacks
quelle
quelle
Antworten:
Da Sie über Hex sprechen, müssen Sie mit
0x
der Deckkraft beginnen und diese nicht vergessen.Also im Grunde: 0xFFFF6666
ColorDrawable cd = new ColorDrawable(0xFFFF6666);
Sie können auch eine neue Datei colours.xml 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
quelle
new ColorDrawable(getResources().getColor(R.color.red)))
dankeUm ContextCompat zu verwenden und die Farbe wiederzuverwenden, können Sie Folgendes tun:
ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));
quelle
this
?Es sollte so sein ...
ColorDrawable cd = new ColorDrawable(0xffff6666);
Hinweis Ich habe 8 Hex-Ziffern verwendet, nicht 6 Hex-Ziffern. die zur Transparenz beitragen
quelle
cd
in Bezug auf verwendetToast
?Um den obigen Rat zu befolgen, um eine Zusammenfassung dieser Frage zu erhalten:
ColorDrawable colorDrawable = neues ColorDrawable ( Color.parseColor ("# ce9b2c")); `
ColorDrawable colorDrawable = neues ColorDrawable ( 0xFFCE9B2C ); Beachten Sie, dass es 8 hexadezimale Ziffern gibt, nicht 6 hexadezimale Ziffern, was nicht funktioniert. Fall alle
ColorDrawable colorDrawable = new ColorDrawable (ContextCompat.getColor (mContext, R.color.default_color));
Wählen Sie bis zu Ihnen!
quelle
int color = Color.HSVToColor(new float[]{...})
und dann oben verwenden.Ich denke, Sie müssen verwenden:
quelle
Nehmen wir an, wir haben die Farbe # 8080000.
1) Umwandlung von Hex in Int
int myColor = Color.parseColor("#808000");
2) Hintergrund einstellen
quelle