Peut GradientColor être utilisé pour définir un dégradé pour un remplissage ou le contour entièrement en XML?
J'étais en train de regarder la documentation pour GradientColor https://developer.android.com/reference/android/R.styleable.html#GradientColor . Comment puis-je définir un dégradé de couleur en XML et de l'appliquer à un XML vecteur dessiné?
J'ai essayé de color.xml, styles.xml et dans un XML vecteur dessiné.
J'ai l'erreur "impossible de convertir @id/gradclor dans un ColorStateList" avec:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="120dp"
android:height="120dp"
android:viewportWidth="120.0"
android:viewportHeight="120.0">
<path
android:name="play_triangle"
android:pathData="M 30 30 L 30 90 L 80 60 z"
android:strokeColor="@id/gradclor"
android:strokeWidth="5"/>
<color
android:name="@+id/gradclor"
android:startColor="#FFFFFF"
android:endColor="#00FFFF"
android:angle="145"/>
</vector>
ou
"A échoué à convertir #FFFFFFFF #00FFFFFF 145 dans un ColorStateList" lors de l'utilisation:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="120dp"
android:height="120dp"
android:viewportWidth="120.0"
android:viewportHeight="120.0">
<path
android:name="play_triangle"
android:pathData="M 30 30 L 30 90 L 80 60 z"
android:strokeColor="@color/GradientStrokeBorder"
android:strokeWidth="5"/>
</vector>
avec le suivant color.xml:
<color name="GradientStrokeBorder">
<item name="android:startColor">#FFFFFF</item>
<item name="android:endColor">#00FFFF</item>
<item name="android:angle">145</item>
</color>
Vous devez vous connecter pour publier un commentaire.
J'ai enfin fait le travail. Dégradé de couleur fonctionnalité n'est pas encore prise en charge dans Android Studio (actuel ver est 2.2) afin de ne pas vous aider avec la saisie semi-automatique, mais les marques de gradient de balise d'erreur à la place. Néanmoins, la fonctionnalité ne fonctionne, je l'ai testé avec succès sur le Nexus 5X /API 24. Bien sûr, vous avez à utiliser une API 24+ appareil parce que sinon, cette fonctionnalité n'est pas supportée par l'OS.
Tout d'abord, vous devez ajouter de la couleur des ressources fichier comme ceci:
S'il vous plaît prêter attention au début/à la fin des paramètres que j'ai découvert qu'ils sont essentiels pour les vecteurs gradients.
Placez ce fichier dans res/couleur dossier sous un certain nom. Je l'ai appelé, il gradient.xml si le chemin d'accès complet est res/color/gradient.xml. Après cela, vous pouvez consulter cette ressource dans les attributs de couleur, y compris le tracé vectoriel couleurs:
Avis la référence à la couleur du dégradé de la ressource en strokeColor. Espérons que cette aide!
@color/blue_gradient
) dans res/drawable-v24 et une version en référence à une couleur normale dans res/drawable.vectorDrawables.useSupportLibrary = true
va le convertir en vecteur un drawable pour le format Png pour les Api en dessous de 24. Elle nécessite l'intégration de la dégradés, les couleurs, les dimens dans les fichiers sans l'aide de références. Vous devez ensuite utiliserapp:srcCompat
à consulter le drawable. Ci-dessous API 21, je pense que vous avez aussi besoin deAppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
dans votre activité onCreate. developer.android.com/guide/topics/graphics/...Le dernier aperçu d'Android (3.1 Canaries 6) contient un échantillon à l'aide de vecteur de ressources avec un dégradé.
Je ne suis pas sûr à ce sujet, mais selon ce document:
si votre sdk est <24 il devrait être d'une couleur.
d'autre part, si votre kit de développement est supérieur à 24, je pense qu'il serait bien d'utiliser
<gradient/>
pour remplir votre chemin au lieu de<color/>