当前位置: 代码迷 >> 综合 >> 使用 shapes 产生阴影效果
  详细解决方案

使用 shapes 产生阴影效果

热度:95   发布时间:2023-12-20 23:01:50.0

使用自定义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/