Domanda

Quindi ho il seguente frammento di codice che recupera il colore di sfondo di un'attività.Tuttavia, GetColor restituisce un valore int, e non sembra essere un modo per modificarlo per restituire un formato più standard con cui lavorare e modificare.

    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 questo caso particolare, il colore di sfondo dell'attività è inizialmente definito per essere android:background="#0099cc" nel file XML che GetColor () restituisce come -16737844.Tuttavia, voglio cambiarlo facendo cose come cambiare in modo incrementale i valori RGB del colore nel tempo [I.e.RGB (InitialRVAL + 1, InitialGVAL + 1, InitialBval + 1)].Questo mi richiede in qualche modo convertire -16737844 in una serie di valori RGB, ma non sembra essere un mezzo per farlo.

È stato utile?

Soluzione

Si desidera convertire il valore del colore esadecimale su RGB.

int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = (color >> 0) & 0xFF;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top