为控件设置一个有阴影感的背景图片即可,可以使用shape
创新互联建站是一家专注于网站设计、成都网站建设与策划设计,阿克塞哈萨克族自治网站建设哪家好?创新互联建站做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:阿克塞哈萨克族自治等地区。阿克塞哈萨克族自治做网站价格咨询:13518219792
在自定义shape中增加一层或多层,并错开,即可显示阴影效果。为增加立体感,按钮按下的时候,只设置一层。我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小
//自定义两种阴影效果
第一种
?xml version="1.0" encoding="utf-8"?
selector xmlns: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
!-- 第一层 --
item android:left="4dp" android:top="4dp"
shape
solid android:color="#66000000"/
corners android:radius="30dip"/
!-- 描边 --
stroke android:width="1dp" android:color="#ffffffff"/
/shape
/item
!-- 第二层 --
item android:bottom="4dp" android:right="4dp"
shape
solid android:color="#ff58bb52"/
corners android:radius="30dip"/
!-- 描边 --
stroke android:width="1dp" android:color="#ffffffff"/
/shape
/item
/layer-list
/item
/selector
第二种
?xml version="1.0" encoding="utf-8"?
selector xmlns:android=""
!-- 点击之后 --
item android:state_pressed="true"
layer-list
item android:left="4dp" android:top="4dp"
shape
solid android:color="#ff58bb52"/
corners android:radius="3dp"/
/shape
/item
/layer-list
/item
!-- 正常状态 --
item
layer-list
!-- 第一层 --
item android:left="2dp" android:top="2dp"
shape
solid android:color="#66000000"/
corners android:radius="3dp"/
/shape
/item
!-- 第二层 --
item android:bottom="4dp" android:right="4dp"
shape
solid android:color="#ff58bb52"/
corners android:radius="3dp"/
/shape
/item
!-- 第三层 --
item android:bottom="6dp" android:right="6dp"
shape
solid android:color="#ffcccccc"/
corners android:radius="3dp"/
/shape
/item
/layer-list
/item
/selector
设置后的效果图如下
Android自定义边框,可以设置任意边框的角度和阴影。我下面分为 四个角度设置边框、两个角度设置边框、半圆球设置边框加两层阴影等。
效果图:
效果图:
效果图:
elevation 设置阴影需要注意两点:
1、view需要设置背景
2、阴影是绘制在父控件上的,子控件和父控件之间要留空隙,用padding也不行
在开发过程中有过这样的布局:
我子Linearlayout是设置的圆角背景,结果这样的效果是:只有圆角的便便才有一丁点的阴影,原因是父布局设置的是padding,子控件是match_parent,空隙不足导致,将子布局改为margin,去掉父控件的padding就行了
设置阴影需要按照以下步骤:
1、设置eleavation值;
2、添加一个背景或者outline。
可以在xml中通过定义一个背景来设置outline:
TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" /
!-- res/drawable/myrect.xml --
shape xmlns:android=""
android:shape="rectangle"
solid android:color="#42000000" /
corners android:radius="5dp" /
/shape
也可以通过代码来创建一个outline:
/* Get the size of the shape from resources. */
int shapeSize = getResources().getDimensionPixelSize(R.dimen.shape_size);
/* Create a circular outline. */
mOutlineCircle = new Outline();
mOutlineCircle.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 2);
/* Create a rectangular outline. */
mOutlineRect = new Outline();
mOutlineRect.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 10);