J'essaie de créer un dégradé qui émet du milieu de l'écran en blanc et vire au noir en se déplaçant vers les bords de l'écran.
En créant un dégradé "normal" comme celui-ci, j'ai expérimenté différentes formes:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#E9E9E9" android:endColor="#D4D4D4"
android:angle="270"/>
</shape>
Lors de l'utilisation de la forme "ovale", j'ai au moins obtenu une forme ronde, mais il n'y avait aucun effet de dégradé. Comment puis-je atteindre cet objectif?'
Je trouve toujours les images utiles lors de l'apprentissage d'un nouveau concept, c'est donc une réponse supplémentaire.
Le
%p
signifie un pourcentage du parent, c'est-à-dire un pourcentage de la dimension la plus étroite de la vue sur laquelle nous définissons notre dessin. Les images ci-dessus ont été générées en modifiant legradientRadius
dans ce codemy_gradient_drawable
Qui peut être défini sur l'
background
attribut d' une vue comme celui-ciCentre
Vous pouvez modifier le centre du rayon avec
où les décimales sont des fractions de la largeur et de la hauteur pour
x
ety
respectivement.Documentation
Voici quelques notes de la documentation expliquant un peu plus les choses.
la source
%
ou non.Vous pouvez également le faire dans le code si vous avez besoin de plus de contrôle, par exemple plusieurs couleurs et positionnement. Voici mon extrait de code Kotlin pour créer un dégradé radial pouvant être dessiné:
Utilisation de base (mais n'hésitez pas à ajuster avec des paramètres supplémentaires):
la source
Je suppose que vous devriez ajouter android: centerColor
Cet exemple affiche un dégradé horizontal du blanc au noir au blanc.
la source
la source
Voici le xml complet avec dégradé, stoke et forme circulaire.
la source
la source