材质按钮颜色选择器动画

时间:2019-03-06 20:50:43

标签: android material-design android-styles

在禁用/启用MaterialButton的背景颜色更改时,我尝试制作动画。

按钮:

<com.google.android.material.button.MaterialButton
    android:id="@+id/btnContinue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="@dimen/space_medium"
    android:enabled="false"
    android:text="@string/welcome_screen_btn_continue"/>

具有这种主题风格:

<style name="CustomButton" parent="Widget.MaterialComponents.Button">
    <item name="android:textColor">@color/colorTextPrimary</item>
    <item name="android:backgroundTint">@color/button_background</item>
    <item name="android:stateListAnimator">@animator/button_state_animator</item>
</style>

我已经将此样式附加到我的应用样式中,如下所示:

<item name="materialButtonStyle">@style/CustomButton</item>

这是backgroundTint选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true" android:color="@color/colorAccent"/>
    <item android:state_enabled="false" android:color="@color/colorDisabled"/>

</selector>

还有动画器,它使按钮更大,更抬高了……

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_enabled="true">
        <set>
            <objectAnimator
                android:duration="200"
                android:propertyName="translationZ"
                android:valueTo="6dp"
                android:valueType="floatType" />

            <objectAnimator
                android:duration="200"
                android:propertyName="scaleX"
                android:valueTo="1.1"
                android:valueType="floatType" />

            <objectAnimator
                android:duration="200"
                android:propertyName="scaleY"
                android:valueTo="1.1"
                android:valueType="floatType" />

        </set>
    </item>

    <item>
        <set>
            <objectAnimator
                android:duration="200"
                android:propertyName="translationZ"
                android:valueTo="0dp"
                android:valueType="floatType" />

            <objectAnimator
                android:duration="200"
                android:propertyName="scaleX"
                android:valueTo="1"
                android:valueType="floatType" />

            <objectAnimator
                android:duration="200"
                android:propertyName="scaleY"
                android:valueTo="1"
                android:valueType="floatType" />
        </set>
    </item>

</selector>

我再次尝试以非编程方式对颜色变化进行动画处理。但是,如果您认为最好创建一个新类来扩展“材质”按钮并在那里处理动画,则更好。好吧,我会做到的:D 我是关于最佳实践的

0 个答案:

没有答案