使用StateListAnimator触摸涟漪和提升触摸动画的Android FAB按钮?

时间:2017-07-29 14:45:42

标签: android xml material-design android-animation floating-action-button

我的 v21 及其上方的xml布局中有 FloatingActionButton ,如下所示:

<android.support.design.widget.FloatingActionButton
    android:id="@+id/share_fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:background="@drawable/ripples_on_touch"
    android:elevation="@dimen/elevation_fab_resting"
    android:src="@drawable/ic_share_white_24dp"
    android:stateListAnimator="@animator/lift_on_touch"
    tools:targetApi="lollipop" />

现在,我想给它一个涟漪效果并触摸触摸动画。我必须使用stateListAnimator将translationZ应用于它。另外,我在触摸时给出了背景波纹效果。但是,我无法获得效果。

这是我的 drawable-v21 / ripples_on_touch.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item>
        <shape android:shape="oval">
            <solid android:color="?android:colorAccent" />
        </shape>
    </item>
</ripple>

这是我的 animator-v21 / lift_on_touch.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:state_pressed="true">
        <objectAnimator
            android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ"
            android:valueTo="12dp"
            android:valueType="floatType" />
    </item>
    <item>
        <objectAnimator
            android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ"
            android:valueTo="0dp"
            android:valueType="floatType" />
    </item>
</selector>

PS:我的FAB按钮的静止高度为6dp,如上图所示按下时我想要升高到12dp。任何帮助将不胜感激。

0 个答案:

没有答案