2017-06-15 1 views
1

Le document dit:Pourquoi getResources(). GetColor (int) est-il déprécié?

Cette méthode a été dépréciée dans le niveau de l'API 23. Utilisez getColor(int, Theme) à la place.

Et de nombreux messages pointent vers la méthode ContextCompat.getColor(Context, int) en remplacement.

également le document explique le paramètre Theme:

thème Resources.Theme: Le thème utilisé pour le style des attributs de couleur, peut être nul. Pouvez-vous expliquer comment le thème peut affecter la couleur?

Pouvez-vous expliquer comment le thème peut affecter la couleur?

Répondre

2

Certaines couleurs complexes comme android.content.res.GradientColor (qui sont utilisés dans un VectorDrawable) ont besoin d'un thème afin de gonfler le gradient, puisque vous pourriez avoir une définition comme:

<gradient xmlns:android="http://schemas.android.com/apk/res/android"> 
    <android:startColor="?android:attr/colorPrimary"/> 
    <android:endColor="?android:attr/colorControlActivated"/> 
    <android:type="linear"/> 
</gradient> 
+0

Ah, je vois. La classe Resources possède également une méthode getColorStateList (int, Theme) et une version obsolète pour cette méthode. – ssynhtn