Ajouter de l'ombre à forme personnalisée sur Android
Est-il possible d'ajouter une ombre portée à une forme personnalisée dans Android? Après avoir cherché dans la documentation, je ne vois qu'un moyen pour appliquer une ombre au texte.
J'ai essayé cela avec pas de chance:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#90ffffff"/>
<corners android:radius="12dp" />
<item name="android:shadowColor">#000000</item>
<item name="android:shadowRadius">5</item>
<item name="android:shadowDy">3</item>
</shape>
Vous devez vous connecter pour publier un commentaire.
Après Beaucoup de recherche j'ai enfin obtenu ce
<!-- Bottom 2dp Shadow -->
je ne vois pas de2
dans votre code... ???C'est comment je le fais:
Code soufflet pour un ÉTAT du bouton:
Alors vous devriez avoir un sélecteur avec différentes versions de la touche, quelque chose comme:
j'espère que cela peut vous aider..bonne chance
C'est ma version d'une ombre portée. J'allais pour qu'une vague ombre tout autour de la forme et utilisé cette réponse par Joakim Lundborg que mon point de départ. Ce que j'ai changé est à ajouter à tous les coins de l'ombre éléments et d'augmenter le rayon de l'angle pour chaque ombre de l'élément. Voici donc la
xml
:La suite travaillé pour moi: il suffit de l'enregistrer comme custom_shape.xml.
Je pense que cette méthode donne de très bons résultats:
J'ai trouvé ce à:
http://www.uifuel.com/android-creating-a-drop-shadow-in-xml-layout/
Si vous n'avez pas idée de faire de certains de dessin personnalisé avec la Toile de l'API, découvrez cette réponse sur les ombres portées. Voici un suivi question à celui qui résout un problème dans l'original.
Vieille question, mais l'Élévation, disponible, avec la Conception de Matériel fournit désormais de l'ombre à tout point de vue.
Voir les docs à https://developer.android.com/training/material/shadows-clipping.html
ImageButton
au lieu d'uneImageView
plusButton' because it allows a
ImageButton` permet à la fois uneandroid:background
et unandroid:src
. Donc j'ai été en mesure de préciserandroid:elevation
juste une fois et en évitant les "Inca effet pyramide" que j'ai décrit dans mon dernier commentaire.Je propose une petite amélioration à Bruce est une solution qui est de prévenir le chevaucher de la même forme sur le dessus les uns des autres et d'utiliser simplement de l'avc au lieu de solide.
Il devrait ressembler à ceci:
Enfin, je tenais à préciser pour les personnes qui voudraient une ombre dans une direction précise que tout ce que vous avez à faire est de définir le haut, le bas, la gauche ou la droite pour 0dp (pour une ligne pleine) ou -1dp (pour rien)
Je pense que cette ombre portée de la valeur est bonne pour la plupart des cas:
Cette question peut-être vieux, mais pour tout le monde dans le futur, qui veut une façon simple d'obtenir un complexe des effets d'ombre découvrez ma bibliothèque ici https://github.com/BluRe-CN/ComplexView
À l'aide de la bibliothèque, vous pouvez changer les couleurs d'ombre, d'ajuster les bords et bien plus encore. Voici un exemple pour réaliser ce que vous cherchez pour.
Pour changer la couleur de l'ombre, de l'utilisation de l'app:shadowColor="votre code couleur".
si vous avez besoin d'une ligne droite de l'ombre (comme en bas de la barre d'outils), vous pouvez également utiliser gradient xml:
espère que cela aide quelqu'un