• 12.4 视图与阴影" level="2">12.4 视图与阴影
    • 12.4.1 阴影效果" level="3">12.4.1 阴影效果

    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.4 视图与阴影 - 图1 图12.8 elevation

    在Android 5.X中,View的Z值由两部分组成,elevation和translationZ(它们都是Android 5.X新引入的属性)。elevation是静态的成员,translationZ可以在代码中使用来实现动画效果,它们的关系如下所示。

    1. Z = elevation + translationZ

    通过在XML布局中使用如下所示代码来静态设置View的视图高度。

    1. android:elevation="XXdp"

    通过下面的代码,演示了不同视图高度所显示效果的不同,XML代码如下所示,显示效果如图12.9所示。

    12.4 视图与阴影 - 图2 图12.9 视图elevation

    1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:tools="http://schemas.android.com/tools"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:orientation="vertical"
    6. tools:context=".MainActivity">
    7.  
    8. <TextView
    9. android:layout_width="100dp"
    10.  
    11. android:layout_height="100dp"
    12. android:layout_margin="10dp"
    13. android:background="@drawable/shape" />
    14.  
    15. <TextView
    16. android:layout_width="100dp"
    17. android:layout_height="100dp"
    18. android:layout_margin="10dp"
    19. android:elevation="2dp"
    20. android:background="@drawable/shape" />
    21.  
    22. <TextView
    23. android:layout_width="100dp"
    24. android:layout_height="100dp"
    25. android:layout_margin="10dp"
    26. android:elevation="10dp"
    27. android:background="@drawable/shape" />
    28. </LinearLayout>
    29.  

    在程序中,同样可以使用如下代码来动态改变视图高度。

    1. view.setTranslationZ(XXX);

    通常也会使用属性动画来为视图高度改变的时候增加一个动画效果,代码如下所示。

    1. if (flag) {
    2. view.animate().translationZ(100);
    3. flag = false;
    4. } else {
    5. view.animate().translationZ(0);
    6. flag = true;
    7. }