视图状态选择动画
听起来很模糊,不知道啥意思是吧。就行button选择器一样,按下产生一个水波纹动画一样。
二话不说,先看实现的效果
经过这个动画后,把button搞成这个鸟样了,是不是很炫酷
看代码:
1.先定义一个动画选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<set>
<!-- you could have other objectAnimator elements
here for "x" and "y", or other properties -->
<objectAnimator android:propertyName="translationX"
android:duration="1500"
android:valueTo="50dp"
android:valueType="floatType"/>
<objectAnimator android:propertyName="scaleX"
android:duration="1500"
android:valueTo="2"
android:valueType="floatType"/>
<objectAnimator android:propertyName="rotation"
android:duration="1500"
android:valueTo="360"
android:valueType="floatType"/>
</set>
</item>
<item android:state_pressed="false">
<set>
<objectAnimator android:propertyName="translationX"
android:duration="1500"
android:valueTo="0dp"
android:valueType="floatType"/>
<objectAnimator android:propertyName="scaleX"
android:duration="1500"
android:valueTo="1"
android:valueType="floatType"/>
<objectAnimator android:propertyName="rotation"
android:duration="1500"
android:valueTo="0"
android:valueType="floatType"/>
</set>
</item>
</selector>
2. button的xml文件,stateListAnimator属性设置上面的选择器
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="th.zxq.com.quxianyundong.MainActivity">
<Button
android:id="@+id/button02"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="50dp"
android:layout_marginLeft="50dp"
android:stateListAnimator="@drawable/background_transitionz"
android:background="@drawable/button"
android:translationZ="10dp"
android:text="视图button"/>
</LinearLayout>
就这写代码,长按button尝试。
如果要将定制视图状态动画附加至一个视图,请依照此示例使用 XML 资源文件中的 selector 元素定义一个动画,并使用 android:stateListAnimator 属性将此动画分配给您的视图。 如果要将一个状态列表动画分配给您的代码内的一个视图,请使用 AnimationInflater.loadStateListAnimator() 方法,并以 View.setStateListAnimator() 方法将动画分配给您的视图。
当您的主题扩展材料主题时,在默认情况下按钮将拥有一个 Z 动画。如果要避免您的按钮出现这类行为,请将 android:stateListAnimator 属性设置为 @null。
当您的主题扩展材料主题时,在默认情况下按钮将拥有一个 Z 动画。如果要避免您的按钮出现这类行为,请将 android:stateListAnimator 属性设置为 @null。