Comment convertir la valeur int renvoyée par getColor() de ColorDrawable en RVB ?
-
20-12-2019 - |
Question
J'ai donc l'extrait de code suivant qui récupère la couleur d'arrière-plan d'une activité.Cependant, getColor renvoie une valeur int, et il ne semble pas y avoir de moyen de la modifier pour renvoyer un format plus standard avec lequel travailler et modifier.
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();
Dans ce cas particulier, la couleur de fond de l'activité est initialement définie comme étant android:background="#0099cc"
dans le fichier XML que getColor() renvoie sous la forme -16737844.Cependant, je veux le changer en faisant des choses comme changer progressivement les valeurs RVB de la couleur au fil du temps [c'est-à-dirergb(initialRVal+1,initialGVal+1,initialBVal+1)].Cela m'oblige à convertir d'une manière ou d'une autre -16737844 en un ensemble de valeurs RVB, mais il ne semble pas y avoir de moyen de le faire.
La solution
Vous souhaitez convertir la valeur de couleur hexadécimale en RVB.
int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = (color >> 0) & 0xFF;