我正在尝试在我的应用程序中实现Material Design,但是我不明白用StateListAnimator实现阴影或为视图分配高程有什么区别。

以下是即时通讯所涉及的链接:

StateListAnimator
Elevation

我看到的是两者都可以做同样的事情,那么为什么要在v5.0中实现两者呢?

最佳答案

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

因此,默认按钮样式使用stateListAnimator属性而不是设置height属性。

这是该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>
    ...

关于android - Android Material Design View 状态更改与高程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27969848/

10-09 01:12