Comment appliquer shadow à ImageView?
je veux appliquer l'ombre sur le ImageView
. Quand j'applique shadow à un TextView
Je l'obtiens mais même il ne va pas à ImageView
. Comment puis-je résoudre ce problème?
4 réponses
nous pouvons également utiliser CardView qui fournit un fond de coin arrondi et l'ombre. Pour utiliser cela, vous devez ajouter la bibliothèque V7 CardView comme une dépendance au projet dans la construction.gradle comme ci-dessous.
dependencies {
compile 'com.android.support:cardview-v7:23.0.1'
-------
}
Note: modifier
23.0.1
dans la ligne ci-dessus avec la version respectée.
donc j'ai entouré le ImageView
avec CardView
pour faire ombre comme ci-dessous.
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@android:color/white">
<ImageView
android:id="@+id/dish_image"
android:layout_width="match_parent"
android:layout_height="120dp"
android:adjustViewBounds="true" />
</android.support.v7.widget.CardView>
il ajoutera une ombre autour de l'image.
Remarque: je ne sais pas si c'est une bonne solution. Je suis un débutant. Je essayé de mettre en œuvre le
CardView
qui donne une idée à mettre en œuvre la même chose pour ça. Si ce n'est pas bon s'il vous plaît me mettre à jour avec la raison.
extrait de la présentation de Romain Guy à Devoxx, pdf trouvé ici .
Paint mShadow = new Paint();
// radius=10, y-offset=2, color=black
mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000);
// in onDraw(Canvas)
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow);
Espérons que cette aide.
NOTES
N'oubliez pas pour Honeycomb et au-dessus vous devez invoquer setLayerType(LAYER_TYPE_SOFTWARE, mShadow)
, sinon vous ne verrez pas votre ombre! (@Dmitriy_Boichenko)
SetShadowLayer
ne fonctionne pas avec l'accélération matérielle malheureusement il réduit considérablement les performances (@Matt Usure)
réponse tirée de ici
pour les Api supérieures à 21. Vous pouvez essayer en xml dans imageview ou bouton: lire ici sur le site du développeur
android:elevation="5dp"
vous pouvez créer une liste de calques à dessiner et y placer vos deux éléments (dessins) pour une image et votre ombre.
la position et le contenu de votre élément d'ombre peuvent changer selon l'endroit où vous voulez appliquer l'ombre (en haut, à gauche, à droite, à droite et à droite, etc.) et le style de votre ombre.
créer un fichier shadow_rect.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<shape
android:shape="rectangle">
<solid android:color="@android:color/darker_gray" />
<corners android:radius="0dp"/>
</shape>
</item>
<item android:right="1dp" android:bottom="2dp">
<shape
android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners android:radius="1dp"/>
</shape>
</item>
</layer-list>
et l'utiliser comme android:background="@drawable/shadow_rect dans votre Imageview.