How to apply shadow to ImageView? How to apply shadow to ImageView? android android

How to apply shadow to ImageView?


We can also use CardView which provides a rounded corner background and shadow. To use that you need to add the v7 CardView library as a dependency to the project in the build.gradle like below.

dependencies {    compile 'com.android.support:cardview-v7:23.0.1'    -------}

Note: Change 23.0.1 in the above line with the respected version.

So I surrounded the ImageView with CardView to make shadow like below.

<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>

It'll add a shadow around the image.

Note: I don't know whether it is a good workaround. I am a beginner. I tried to implement the CardView which gives an idea to implement the same for this. If it is not good please update me with the reason.


This is taken from Romain Guy's presentation at 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);

Hope this helps.

NOTES

Don't forget for Honeycomb and above you need to invoke setLayerType(LAYER_TYPE_SOFTWARE, mShadow), otherwise you will not see your shadow! (@Dmitriy_Boichenko)

SetShadowLayer does not work with hardware acceleration unfortunately so it greatly reduces performances (@Matt Wear)

Answer Taken from Here

For Api greater than 21.You can try in xml in imageview or Button : Read here at developer site

android:elevation="5dp"


Create a file 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>

And the use this as android:background="@drawable/shadow_rect within your Imageview.