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)
| 归档时间: |
|
| 查看次数: |
6284 次 |
| 最近记录: |