在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作為視圖的輪廓,視圖投射出圓角陰影。提供一個自定義的輪廓,可以覆蓋默認視圖陰影的形狀。
效果圖如下: