Android 5.X新特性——视图与阴影

       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;
        }