单击CardView上的高程动画

man*_*cas 9 android android-cardview android-elevation

我想将高程动画添加到我的中android.support.v7.widget.CardView,就像材质样式Button一样.我试过设置一个StateListAnimator:

android:stateListAnimator="@anim/selector_raise"
Run Code Online (Sandbox Code Playgroud)

它指向我的选择器res/anim:

<?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="@dimen/touch_raise"
            android:valueType="floatType" />
    </item>
    <item>
        <objectAnimator android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ" android:valueTo="0dp"
            android:valueType="floatType" />
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

但是Android Studio给了我错误:

必须声明元素选择器

这样做的正确方法是什么?

小智 5

我已经尝试过您的代码,也许您只需将状态添加到第二个选择器元素即可。

所以改变这一行

<item>
Run Code Online (Sandbox Code Playgroud)

有了这个

<item android:state_enabled="true" android:state_pressed="false">
Run Code Online (Sandbox Code Playgroud)

完整的代码将是

<?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="@dimen/touch_raise"
            android:valueType="floatType" />
    </item>
    <item android:state_enabled="true" android:state_pressed="false">
        <objectAnimator android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ" android:valueTo="0dp"
            android:valueType="floatType" />
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

  • 为我工作,我将动画师移到了 res/animator/my_filename.xml 下 (3认同)

Can*_*ato 5

您试图在res/anim文件夹中创建此 .xml 。

您应该在 上创建res/animator,如果不存在则很容易创建。

但是,如果您搜索问题,它已经为您提供了可能的解决方案 在此处输入图片说明