首页 > 解决方案 > 如何实现带有渐变背景和模糊阴影的圆形按钮?

问题描述

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

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

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

标签: androidxmlbuttonmaterial-designshadow

解决方案


创建一个可绘制类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>

推荐阅读