Je veux appliquer une ombre à la ImageView
. Quand j'applique une ombre à une TextView
, je l'obtiens mais pareil, on n'obtient pas à ImageView
. Comment puis-je résoudre ce problème?
Nous pouvons également utiliser CardView qui fournit un fond et une ombre aux angles arrondis. Pour utiliser cela, vous devez ajouter v7 CardView library en tant que dépendance du projet dans le fichier build.gradle, comme ci-dessous.
dependencies {
compile 'com.Android.support:cardview-v7:23.0.1'
-------
}
Remarque: Modifiez
23.0.1
dans la ligne ci-dessus avec la version respectée.
J'ai donc entouré la ImageView
avec CardView
pour créer une 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>
Cela va ajouter une ombre autour de l'image.
Remarque: je ne sais pas si c'est une bonne solution de contournement. Je suis un débutant. JE essayé de mettre en œuvre la
CardView
qui donne une idée à mettre en œuvre la même chose pour cela. Si ce n'est pas bon, veuillez me mettre à jour avec la raison.
Ceci est tiré de la présentation de Romain Guy à Devoxx, pdf found here .
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);
J'espère que cela t'aides.
REMARQUES
N'oubliez pas pour Honeycomb et surtout que vous devez invoquer setLayerType(LAYER_TYPE_SOFTWARE, mShadow)
, sinon vous ne verrez pas votre ombre! (@Dmitriy_Boichenko)
SetShadowLayer
ne fonctionne malheureusement pas avec l'accélération matérielle, ce qui réduit considérablement les performances (@Matt Wear)
Réponse tirée de ici
Pour Api supérieur à 21 . Vous pouvez essayer en XML dans imageview ou Button: Lire ici sur le site du développeur
Android:elevation="5dp"
Vous pouvez créer une liste de calques pouvant être dessinée et y placer vos deux éléments (une dessinable) pour une image et votre ombre.
La position et le contenu de votre ombre peuvent changer en fonction de l'endroit où vous souhaitez appliquer l'ombre (haut, gauche, droite, droite et gauche, etc.) et du 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.