android - 如何为形状添加高程?
问题描述
现在我有下一个矩形:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="28dp" />
<gradient
android:endColor="#FFFFFF"
android:gradientRadius="20dp"
android:startColor="#FFFFFF"
android:type="linear" />
<size
android:width="106dp"
android:height="106dp" />
<stroke
android:width="1dp"
android:color="#0189ff" />
</shape>
并有下一个结果:
问:如何添加阴影/高程而不是描边?
解决方案
您不能直接应用阴影代替描边。
为此,您需要使用自定义 XML<layer-list></layer-list>
喜欢
<?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:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#00dff2e4" />
<corners android:radius="@dimen/_5sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#10dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#20dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#30dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#50dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<!-- Background -->
<item>
<shape>
<solid android:color="@android:color/white" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
</layer-list>
输出