Material Design的一个很重要的特点就是拟物扁平化。如果说IOS的扁平化设计太过超前,让很多人还来不及从拟物转变到扁平,那么Material Design则是把IOS往回拉了一点。通过展现生活中的材质效果,恰当地使用阴影和光线,配合完美的动画效果,模拟出一个动感十足又美丽大胆的视觉效果。
1.阴影效果
以往的Android View通常具有两个属性——X和Y,而在Android 5.X中,Google为其增加了一个新的属性——Z,对应垂直方向上的高度变化。相信通过图128大家可以很快了解Z的意义。

在Android5.X中,View的Z值由两部分组成,elevation和translationZ(它们都是Android5.X新引入的属性)。elevation是静态的成员,translationZ可以在代码中使用来实现动画效果,它们的关系如下所示。
Z = elevation + translationZ
通过在XML布局中使用如下所示的代码来静态设置View的视图高度。
android:elevation="xxdp"通过下面的代码,演示了不同视图高度所显示效果的不同,XML代码如下所示,显示效果如下图所示。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="test.chenj.study_12.MainActivity">
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_margin="10dp"
android:background="@drawable/shape"/>
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_margin="10dp"
android:elevation="2dp"
android:background="@drawable/shape"/>
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_margin="10dp"
android:elevation="10dp"
android:background="@drawable/shape"/>
</LinearLayout>
在程序中同样可以使用如下代码来动态改变视图高度。
view.setTranslationZ(50.0f);通常也会使用属性动画来为视图改变的时候增加一个动画效果,代码如下所示。
if (flag) {
view.animate().translationZ(100);
flag = false;
} else {
view.animate().translationZ(10);
flag = true;
}