使用自定义shapes可以让你的视图快速地产生阴影效果。
方法是先定义一个阴影层(layer)作为背景,再定义一个内容层,放到背景上面。
注意要错开两个layer,一以产生阴影效果。
例如:
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item><layer-list><item android:right="4dp" android:bottom="4dp"><!-- SHADOW LAYER --></item><item android:left="4dp" android:top="4dp"><!-- CONTENT LAYER--></item></layer-list></item>
</selector>
你可以通过 [top,bottom,left,right] 这些参数来控制阴影的大小和方向。
来看一下WhoSaid这个例子:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><layer-list><item android:left="4dp" android:top="4dp"><shape><solid android:color="#ff58bb52" /><corners android:radius="30dip"/></shape></item></layer-list></item><item><layer-list><!-- SHADOW LAYER --><item android:left="4dp" android:top="4dp"><shape><solid android:color="#66000000" /><corners android:radius="30dip"/></shape></item><!-- CONTENT LAYER --><item android:bottom="4dp" android:right="4dp"><shape><solid android:color="#ff58bb52" /><corners android:radius="30dip"/></shape></item></layer-list></item>
</selector>
当然,我们在按下状态的时候,去掉阴影,以便给用户一个反馈效果。
请记得你可以有效地利用距离和色彩产生不同的效果。比如你还可以给阴影添加梯度(gradient)。
FROM:
http://slothdevelopers.wordpress.com/2014/05/22/shadow-effect-with-custom-shapes/