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.

War es hilfreich?

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top