Android Teinte à dessiner


Exemple

Un tirable peut être teinté d'une certaine couleur. Cela est utile pour prendre en charge différents thèmes dans votre application et réduire le nombre de fichiers de ressources pouvant être dessinés.

Utilisation des API du framework sur le SDK 21+:

Drawable d = context.getDrawable(R.drawable.ic_launcher);
d.setTint(Color.WHITE);

Utilisation de la bibliothèque android.support.v4 sur le SDK 4+:

//Load the untinted resource
final Drawable drawableRes = ContextCompat.getDrawable(context, R.drawable.ic_launcher);
//Wrap it with the compatibility library so it can be altered
Drawable tintedDrawable = DrawableCompat.wrap(drawableRes);
//Apply a coloured tint
DrawableCompat.setTint(tintedDrawable, Color.WHITE);
//At this point you may use the tintedDrawable just as you usually would 
//(and drawableRes can be discarded)

//NOTE: If your original drawableRes was in use somewhere (i.e. it was the result of 
//a call to a `getBackground()` method then at this point you still need to replace 
//the background. setTint does *not* alter the instance that drawableRes points to, 
//but instead creates a new drawable instance

Veuillez ne pas que la int color ne se réfère pas à une ressource couleur, mais vous n'êtes pas limité aux couleurs définies dans la classe 'Couleur'. Lorsque vous avez une couleur définie dans votre XML que vous souhaitez utiliser, vous devez d'abord obtenir sa valeur.

Vous pouvez remplacer les utilisations de Color.WHITE utilisant les méthodes ci-dessous

Lorsque vous ciblez les anciennes API:

getResources().getColor(R.color.your_color);

Ou sur des cibles plus récentes:

ContextCompat.getColor(context, R.color.your_color);