Come convertire il valore int restituito da GetColor () di Colordrawable () a RGB?
-
20-12-2019 - |
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.
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;
.