Android Material Design视图状态更改与高程

时间:2015-01-15 17:52:23

标签: android android-5.0-lollipop material-design

我尝试在我的应用中实现Material Design,但我无法理解使用StateListAnimator实现阴影或为视图指定高程有什么不同。

以下是我正在谈论的内容的链接:

StateListAnimator
Elevation

我所看到的是两者都可以做同样的事情,为什么他们在v5.0中都实现了这两者?

1 个答案:

答案 0 :(得分:3)

StateListAnimator允许您为包含elevation的视图属性设置动画。默认的Button实现使用StateListAnimator来处理elevationtranslationZ更改以响应禁用和按下的状态更改。

因此,默认的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>
    ...