How to add a blurred drop shadow to a button?

android add shadow to view programmatically
add shadow to vector android
android drop shadow
android button shadow
android shadow drawable
android gradient shadow
android seekbar thumb shadow
android drop shadow on button

I need to add blurred drop shadow to my button:

I tried to create background with layer-list xml drawable, but it not looks like blur.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Drop Shadow Stack -->
    <item>
        <shape>
            <corners android:radius="45dp" />
            <padding
                android:bottom="2dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <stroke
                android:width="6dp"
                android:color="#007879E8" />

        </shape>
    </item>
    //////   10 more items
        <item>
        <shape>
            <corners android:radius="45dp" />
            <padding
                android:bottom="2dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <stroke
                android:width="6dp"
                android:color="#177879E8" />


        </shape>
    </item>

    <!-- Background -->
    <item>
        <shape>
            <corners android:radius="45dp" />
            <stroke
                android:width="2dp"
                android:color="@color/main_purple_text_color" />
        </shape>
    </item>

</layer-list>

Also i tried to use background element behind button with blured png but it uses to many resources and i cannot create selector to change background on hover or click.

I need to have single background file for button and use selector to change blur and gradient on hover/click. Any ideas how to achieve such effect with Android SDK ?

UPDATE 1

Thanks everybody for answers, but I'm not asking how to create gradient. I've already done this. I need to create blurred drop-shadow.

Well i found the solution: we need to create 9.png with blurred drop-shadow via this generator and pass it to drawable layer-list that contain button background gradient:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/blurred_9_path_png" />
    <item>
        <shape android:shape="rectangle" android:padding="10dp">
            <corners android:radius="45dp" />
            <gradient
                android:angle="45"
                android:endColor="@color/facebook_btn_fill_grad2"
                android:startColor="@color/facebook_btn_fill_grad1"
                android:type="linear" />
            <padding
                android:bottom="0dp"
                android:left="0dp"
                android:right="0dp"
                android:top="0dp" />
        </shape>
    </item>

</layer-list> 

After that we can use such drawables with different 9.path blurred shadow to create selector.

Apply shadow or blur effects – Figma, Layer Blur (top); Stroke Paints; Inner Shadow; Fill Paints; Drop Shadow When clicked, these buttons will add a special code to the Rename to field that allows  Well i found the solution: we need to create 9.png with blurred drop-shadow via this generator and pass it to drawable layer-list that contain button background gradient:

I add this as background drawable (grey drop shadow):

<!-- Drop Shadow Stack -->
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />
        <solid android:color="#1f000000" />
        <corners android:radius="30dp" />
    </shape>
</item>
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />
        <solid android:color="#2f000000" />
        <corners android:radius="30dp" />
    </shape>
</item>
<item>
    <shape>
        <padding
            android:bottom="1dp"
            android:left="1dp"
            android:right="1dp"
            android:top="1dp" />
        <solid android:color="#3f000000" />
        <corners android:radius="30dp" />
    </shape>
</item>

<!-- Background -->
<item>
    <shape>
        <solid android:color="@android:color/white" />
        <corners android:radius="30dp" />
    </shape>
</item>

Ensures the height/width/padding of textview large enough to contains above shadow 3dp (1dp+1dp+1dp for all colors from #3f000000 until #1f000000).

How To Use Shadows And Blur Effects In Modern UI Design , While functional aspect of a design is key to product success, aesthetics and In today's article, I'll explain how visual elements, such as shadows and blur effects, can If you'd like to try adding these elements to your designs, you can which elements are interactive in this Windows 2000 dialog box:. This is kind of driving me insane. Adding a DropShadowEffect to a button. In the IDE it looks like this: Second button is for reference with no DropShadowEffect. As you can see there next no difference. Then I build the project and when it runs it looks like this: What is causing this change? Here is the XAML for the two buttons:

You can do it by Graident

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient 
    android:startColor="#6586F0"
    android:centerColor="#D6D6D6"
    android:endColor="#4B6CD6"
    android:angle="90"/>
<corners 
    android:radius="0dp"/>

Android shadow drawable xml. · GitHub, <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >. <!-- Drop Shadow Stack -->. <item>. <shape>. <padding. android:bottom="1dp". The first thing you want to do is duplicate the layer you want to add a shadow to and then lock the bottom layer. Then, fill the locked layer with black (or any darker color). Drag this layer down and to the right (or wherever you want the shadow to fall). Unlock the shadow layer and then go to adjustments > gaussian blur.

Create a drawable "round_corner.xml"

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <gradient
            android:angle="360"
            android:startColor="#8A88F3"
            android:endColor="#B96AE8"
            android:type="linear" />

        <corners android:bottomLeftRadius="24dp"
            android:bottomRightRadius="24dp"
            android:topLeftRadius="24dp" android:topRightRadius="24dp" />
    </shape>
</item>
</selector>

in Activity set a button in xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_language_select_save"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_centerInParent="true"
        android:layout_marginTop="20dp"
        android:background="@drawable/round_corner_spiner"
        android:paddingLeft="130dp"
        android:paddingRight="130dp"
        android:text="Vlad[enter image description here][1]"
        android:textColor="@android:color/white"
        android:textSize="20sp"
        android:visibility="visible" />
</RelativeLayout>

Helpful links

Hope this helps you

CSS box-shadow property, box-shadow: none|h-offset v-offset blur spread color |inset|initial|inherit;. Note: To attach more than one shadow to an element, add a comma-separated list of  Blurred Edges. So far, all the shadows that we have created have sharp edges. It's also possible to make the shadow gradually lighter around the edges, fading out until it cannot be seen any more. To do this, you will have to add another number after the horizontal and vertical lengths: the blur radius.

Create drawable shadow.xml file

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<solid android:color="#E3D5FC" />
<corners
    android:radius="20dp"/>
<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" >
</padding>

Create another drawable background.xml file

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/shadow" />
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <gradient
            android:angle="0"
            android:centerColor="#9E7CEF"
            android:endColor="#B070EB"
            android:startColor="#8989F4" />
        <corners android:radius="22dp" />
        <size android:height="40dp"/>
    </shape>
</item>

and use this file in xml as below.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
    android:id="@+id/img_save"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:gravity="center"
    android:text="BUTTON"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@android:color/white"
    android:layout_centerInParent="true"/>
</RelativeLayout>

Hope it Helps.

CSS Shadow Effects, With CSS you can add shadow to text and to elements. In these chapters you will learn text-shadow; box-shadow Then, add a blur effect to the shadow:  This is my version of a drop shadow. I was going for a hazy shadow all around the shape and used this answer by Joakim Lundborg as my starting point. What I changed is to add corners to all the shadow items and to increase the radius of the corner for each subsequent shadow item. So here is the xml:

drop-shadow(), A drop shadow is effectively a blurred, offset version of the input image's alpha mask, drawn in a specific color and composited below the image. If I add a DropShadowEffect to an parent element the text of the child elements are blurred. Why? <Grid> <Grid.Effect> <DropShadowEffect /> </Grid.Effect>

box-shadow, The box-shadow CSS property adds shadow effects around an offset-x | offset-​y | blur-radius | color */ box-shadow: 10px 5px 5px black;  If you are targeting pre-Lollipop devices, you can use Shadow-Layout, since it easy and you can use it in different kind of layouts. Add shadow-layout to your Gradle file: At the top the xml layout where you have your button, add to the top: it will make available the custom attributes.

Create Shadows and Clip Views, This is especially useful for cases where state changes trigger animations, like when a user presses a button. For more information, see Animate 

Comments
  • Were you able to do in a better way? thanks.
  • what options did you put in the website?
  • Yea what options did u put on the website to create that?
  • Thanks, but it doesn't looks blurred.
  • to add shadow like blur view you can add background image exact like effect.