參考原文
我們平時處理TextView或Button的點擊效果普舆,通常會改變控件的顏色來區(qū)分是否按下恬口,但是這并不符合MD的規(guī)范。
因此 Material Design 對組件有了 z 軸這個概念沼侣,也就是高度祖能。z 值越大,組件離界面底層(水平面)越遠(yuǎn)蛾洛,投影越重养铸。
那我們怎么來實現(xiàn)組件在 z 軸(高度)上的變化效果呢?這就需要用到今天講到的 StateListAnimator 了轧膘。
- 創(chuàng)建一個 animator 資源文件夾揭厚,
- 在其中創(chuàng)建一個 selector_animator.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueTo="1.025"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueTo="1.025"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="4dp"
android:valueType="floatType" />
</set>
</item>
<item>
<set>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleX"
android:valueTo="1.0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="scaleY"
android:valueTo="1.0"
android:valueType="floatType" />
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0dp"
android:valueType="floatType" />
</set>
</item>
</selector>
效果
[圖片上傳失敗...(image-8524c0-1534320645839)]
使用:
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
android:stateListAnimator="@animator/selector_animator" />