三步走
1.先上效果
2.再上代码
3.最后原理
1.效果
2.代码
不需要渐变颜色的阴影,直接使用solid填充颜色既可
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 底部阴影层,向右向下各便宜2dp -->
<item>
<shape android:shape="rectangle" >
<solid android:color="#90000000" />
<corners android:radius="@dimen/home_page_round_rectangle_card_bg_radius" />
</shape>
</item>
<!-- 阴影上边的层,向上便宜2dp漏出下层的部分阴影层 -->
<item android:bottom="2dp">
<shape android:shape="rectangle" >
<solid android:color="@color/home_page_card_title_business_mode" />
<corners android:radius="@dimen/home_page_round_rectangle_card_bg_radius" />
</shape>
</item>
</layer-list>
需要渐变颜色的阴影,使用gradient代替solid填充颜色
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 底部阴影层,向右向下各便宜2dp -->
<item>
<shape android:shape="rectangle" >
<gradient
android:angle="90"
android:type="linear"
android:startColor="#22a9a09d"
android:centerColor="#bbbbbb"
android:endColor="#90000000"/>
<corners android:radius="@dimen/home_page_round_rectangle_card_bg_radius" />
</shape>
</item>
<!-- 阴影上边的层,向上便宜2dp漏出下层的部分阴影层 -->
<item android:bottom="2dp">
<shape android:shape="rectangle" >
<solid android:color="@color/home_page_card_title_business_mode" />
<corners android:radius="@dimen/home_page_round_rectangle_card_bg_radius" />
</shape>
</item>
</layer-list>
3.原理
关键是layer-list的使用:layer-list中可以写多个item,从上到下的item最后层叠效果为坐标轴Z轴方向,先写的item在最底层,后写的item在它上面依次覆盖。最后将layer-list作为background设置既可。