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.

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top