J'essaie d'ajouter une ombre portée à une ImageView. L'autre réponse de Stackoverflow semble utiliser le canevas et les bitmaps, etc., bien plus compliqué qu'il ne devrait l'être.
Sur iOS, je ferais quelque chose comme ceci:
myImageView.layer.shadowColor = [UIColor redColor].CGColor;
myImageView.layer.shadowRadius = 5;
myImageView.layer.shadowOffset = CGRectMake(0, 5);
et il rendrait une ombre portée, que l'ombre soit appliquée sur une vue, une image ou du texte.
J'ai essayé de faire la même chose sur Android mais il refuse simplement de fonctionner:
birdImageView = new ImageView(context);
birdImageView.setImageResource(R.drawable.yellow_bird);
Paint paint = new Paint();
Paint.setAntiAlias(true);
birdImageView.setLayerType(LAYER_TYPE_SOFTWARE, null);
Paint.setShadowLayer(5, 0, 5, Color.argb(255, 255, 0, 0));
birdImageView.setLayerPaint(Paint);
Je ne vois aucune ombre portée rouge attendue sur l'image de mon oiseau.
Est-ce que je fais quelque chose de mal?
Disons que je veux l'ombre portée comme ceci:
Dois-je recourir à Android 5.0 et la nouvelle API Elevation ( http://developer.Android.com/training/material/shadows-clipping.html ) ?
Mais si l'on devait utiliser une nouvelle API, alors selon la démographie actuelle ( http://www.droid-life.com/2016/02/02/Android-distribution-février-2016/ ) plus plus de 50% des utilisateurs ne pourront pas utiliser l'application.
T_T
Dans Android studio, il y a dans la construction drawable
que vous pouvez utiliser pour appliquer l'ombre à n'importe quel View
. C'est similaire à une ombre portée.
Android:background="@drawable/abc_menu_dropdown_panel_holo_light"
En utilisant cela, vous ne pouvez pas changer la couleur d'arrière-plan de la vue et sa couleur de bordure. Si vous souhaitez que votre propre dessin soit personnalisé, utilisez layer-list
custom_drop_shadow_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<!--the shadow comes from here-->
<item
Android:bottom="0dp"
Android:drawable="@Android:drawable/dialog_holo_light_frame"
Android:left="0dp"
Android:right="0dp"
Android:top="0dp">
</item>
<item
Android:bottom="0dp"
Android:left="0dp"
Android:right="0dp"
Android:top="0dp">
<!--whatever you want in the background, here i preferred solid white -->
<shape Android:shape="rectangle">
<solid Android:color="@Android:color/red" />
</shape>
</item>
</layer-list>
et appliquez à votre vue comme ci-dessous
Android:background="@drawable/custom_drop_shadow_drawable"
J'espère que cela vous aidera! Merci Android View shadow