Wie konvertiere ich den zurückgegebenen int-Wert von getColor() von ColorDrawable in RGB?
-
20-12-2019 - |
Frage
Ich habe also den folgenden Codeausschnitt, der die Hintergrundfarbe einer Aktivität abruft.GetColor gibt jedoch einen int-Wert zurück, und es scheint keine Möglichkeit zu geben, diesen zu ändern, um ein Standardformat zurückzugeben, mit dem gearbeitet und geändert werden kann.
setContentView(R.layout.activity_test);
View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
int color = Color.TRANSPARENT;
Drawable background = root.getBackground();
if (background instanceof ColorDrawable)
color = ((ColorDrawable) background).getColor();
In diesem speziellen Fall ist die Hintergrundfarbe der Aktivität zunächst definiert android:background="#0099cc"
in der XML-Datei, die getColor() als -16737844 zurückgibt.Ich möchte es jedoch ändern, indem ich beispielsweise die RGB-Werte der Farbe im Laufe der Zeit schrittweise ändere [d. h.rgb(initialRVal+1,initialGVal+1,initialBVal+1)].Dazu muss ich -16737844 irgendwie in einen Satz RGB-Werte konvertieren, aber es scheint keine Möglichkeit zu geben, dies zu tun.
Lösung
Sie möchten einen hexadezimalen Farbwert in RGB konvertieren.
int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = (color >> 0) & 0xFF;