12.4 视图与阴影" class="reference-link">12.4 视图与阴影
Material Design的一个很重要的特点就是拟物扁平化。如果说iOS的扁平化设计太过于超前,让很多人还来不及从拟物转变到扁平,那么Material Design则是把iOS往回拉了一点。通过展现生活中的材质效果、恰当地使用阴影和光线,配合完美的动画效果,模拟出一个动感十足又美丽大胆的视觉效果。
12.4.1 阴影效果" class="reference-link">12.4.1 阴影效果
以往的Android View通常具有两个属性——X和Y,而在Android 5.X中,Google为其增加了一个新的属性——Z,对应垂直方向上的高度变化。相信通过图12.8,大家可以很快了解Z的意义。
图12.8 elevation
在Android 5.X中,View的Z值由两部分组成,elevation和translationZ(它们都是Android 5.X新引入的属性)。elevation是静态的成员,translationZ可以在代码中使用来实现动画效果,它们的关系如下所示。
- Z = elevation + translationZ
通过在XML布局中使用如下所示代码来静态设置View的视图高度。
- android:elevation="XXdp"
通过下面的代码,演示了不同视图高度所显示效果的不同,XML代码如下所示,显示效果如图12.9所示。
图12.9 视图elevation
- <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=".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(XXX);
通常也会使用属性动画来为视图高度改变的时候增加一个动画效果,代码如下所示。
- if (flag) {
- view.animate().translationZ(100);
- flag = false;
- } else {
- view.animate().translationZ(0);
- flag = true;
- }
