我尝试在我的应用中实现Material Design,但我无法理解使用StateListAnimator
实现阴影或为视图指定高程有什么不同。
以下是我正在谈论的内容的链接:
我所看到的是两者都可以做同样的事情,为什么他们在v5.0中都实现了这两者?
答案 0 :(得分:3)
StateListAnimator允许您为包含elevation
的视图属性设置动画。默认的Button实现使用StateListAnimator来处理elevation
和translationZ
更改以响应禁用和按下的状态更改。
因此,默认的Button样式不使用elevation属性,而是使用stateListAnimator属性。
以下是XML的示例:
res/animator/button_state_list_anim_material.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_enabled="true">
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="@integer/button_pressed_animation_duration"
android:valueTo="@dimen/button_pressed_z_material"
android:valueType="floatType"/>
<objectAnimator android:propertyName="elevation"
android:duration="0"
android:valueTo="@dimen/button_elevation_material"
android:valueType="floatType"/>
</set>
</item>
...