在Android中设置一个阴影很简单,只需要两步:
- 设置eleavation值(高度)
- 添加一个背景或者outline (即阴影的形状)
说明:
View的大小位置都是通过x,y确定的,而现在有了z轴的概念,而这个
z
值就是View的高度(elevation)
,而高度决定了阴影(shadow)的大小
。
注:View的z值由两部分组成,elevation和translationZ(它们都是Android L新引入的属性)。
eleavation
:是静态的成员:设置该组件“浮”起来的高度;translationZ
:是用来做动画:设置该组件在Z方向(垂直屏幕方向)上的位移。
Z(阴影大小) = elevation + translationZ
在layout中使用属性去定义:
android:elevation="10dp"
android:translationZ="10dp"
在java代码中使用
View.setElevation(float);
View.setTranslationZ(float);
举例说明:
给TextView设置android:background
和elevation
(高度决定了阴影的大小)。
<TextViewandroid:id="@+id/myview"android:layout_width="match_parent"android:layout_height="50dp"android:layout_margin="20dp"android:elevation="10dp"android:translationZ="1dp"android:text="阴影效果"android:gravity="center"android:background="@drawable/myrect" />
然后定义个xml(myrect.xml,该文件放到rec/drawable目录下)背景outline轮廓(背景轮廓决定了默认的阴影形状):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" ><solid android:color="#ffffff" /><corners android:radius="7dp" />
</shape>
当这个背景drawable作为视图的轮廓,视图投射出圆角阴影。提供一个自定义的轮廓,可以覆盖默认视图阴影的形状。
效果图如下: