如何实现带有渐变背景和模糊阴影的圆形按钮?

时间:2019-07-18 17:06:17

标签: android xml button material-design shadow

我正在努力实现这样的目标。

https://i.stack.imgur.com/SseaB.png

对于默认的Button / AppCompatButton,我尝试应用带有xml drawable中预定义的圆角的渐变背景。但是如何实现模糊阴影呢?

1 个答案:

答案 0 :(得分:0)

创建一个可绘制的类 bg_theme_round_layer_shadow

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <!-- Drop Shadow Stack -->
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#02AAAAAA" />
            <corners android:radius="46.5dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#05AAAAAA" />
            <corners android:radius="46dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#0FAAAAAA" />
            <corners android:radius="45.5dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#1CAAAAAA" />
            <corners android:radius="44.5dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#24AAAAAA" />
            <corners android:radius="43.5dp" />
        </shape>
    </item>

    <!-- Background -->
    <item>
        <shape>
            <!--<solid android:color="@color/theme_color" />-->
            <gradient android:endColor="@color/gradient_normal_end" android:startColor="@color/gradient_normal_start"/>

            <corners android:radius="43dp" />
        </shape>
    </item>
</layer-list>

将这些颜色放入您的颜色文件中

<color name="gradient_normal_start">#e85d7b</color>
<color name="gradient_normal_end">#efa645</color>