作者:燕潇洒
导读:今天自己回顾了一下给布局设置阴影,原来都是直接拿网上给的来用,看的不是很懂,网上给的注释也让我很郁闷,不得其解。今天果断自己试验了一下。
首先咱们看一下网上给的代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 阴影部分 -->
<!-- 个人觉得更形象的表达:top代表下边的阴影高度,left代表右边的阴影宽度。其实也就是相对应的offset,solid中的颜色是阴影的颜色,也可以设置角度等等 -->
<item
android:left="2dp"
android:top="2dp">
<shape android:shape="rectangle" >
<gradient
android:angle="270"
android:endColor="#0F000000"
android:startColor="#0F000000" />
<corners
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"
android:topLeftRadius="6dip"
android:topRightRadius="6dip" />
</shape>
</item>
<!-- 背景部分 -->
<!-- 形象的表达:bottom代表背景部分在上边缘超出阴影的高度,right代表背景部分在左边超出阴影的宽度(相对应的offset) -->
<item
android:bottom="3dp"
android:right="3dp">
<shape android:shape="rectangle" >
<gradient
android:angle="270"
android:endColor="#FFFFFF"
android:startColor="#FFFFFF" />
<corners
android:bottomLeftRadius="6dip"
android:bottomRightRadius="6dip"
android:topLeftRadius="6dip"
android:topRightRadius="6dip" />
</shape>
</item>
</layer-list>
我也是这段代码教出来的,但是这段代码的注释,却没有看懂,所以我自己试验了几遍。
首先,layer-list是将几个效果层叠起来的效果
1.设置背景部分
item中设置shape,设置背景的颜色,在item中使用android:bottom/top/left/right属性,设置他们的尺寸,在设置这些尺寸的时候,比如bottom的尺寸,网上说,可以理解为是顶部超出阴影的部分,这样理解是没错的,但是自我感觉有点曲折,按照我自己的理解,就是,设置bottom上,留给阴影的部分的尺寸,android:left/right/top亦是如此,其实在看效果时,这些留出来的尺寸区域是空白的,自我猜测,应该默认为白色背景。
2.然后在设置阴影的尺寸
,我们还需要一个item,然后写里面的shape,这个shape其实就是阴影的属性值(颜色等,需要自己设置);如果现在我们不在item中设置android:bottom/left/right/top这些属性的话,其实在设置背景时留出来的尺寸就是阴影的尺寸,但是如果我们设置了四个边的尺寸,那么阴影的宽度就是对应的背景中设置的值减去设置阴影时给的尺寸。就是(背景的bottom-阴影的bottom = 阴影宽度),网上很多都说设置bottom就是设置top的阴影尺寸,感觉并不是这样的
正常的顺序是先设置阴影,在设置背景,这样,背景再能盖在阴影上。为了说明我的理解,才先后颠倒了。我不知道我理解的对不对,但是实际应用我是掌握了。