我想在我的应用程序中为按钮制作动画。 最近听说过StateListAnimator 告诉我有关StateListAnimator的更多信息 我如何在我的应用程序中使用它?
答案 0 :(得分:0)
您可以使用StateListAnimator在视图状态发生变化时提供动画。从:
https://developer.android.com/training/material/animations.html
StateListAnimator类允许您定义在视图状态发生变化时运行的动画师。以下示例显示如何将StateListAnimator定义为XML资源:
<!-- animate the translationZ property of a view when pressed -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="@android:integer/config_shortAnimTime"
android:valueTo="2dp"
android:valueType="floatType"/>
<!-- you could have other objectAnimator elements
here for "x" and "y", or other properties -->
</set>
</item>
<item android:state_enabled="true"
android:state_pressed="false"
android:state_focused="true">
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="100"
android:valueTo="0"
android:valueType="floatType"/>
</set>
</item>
</selector>
要将自定义视图状态动画附加到视图,请使用XML资源文件中的selector元素定义动画师,如本例所示,并使用android:stateListAnimator属性将其指定给视图。要将状态列表动画器分配给代码中的视图,请使用AnimationInflater.loadStateListAnimator()方法,并使用View.setStateListAnimator()方法将动画师分配给视图。
当您的主题扩展材质主题时,按钮默认具有Z动画。要在按钮中避免此行为,请将android:stateListAnimator属性设置为@null。
AnimatedStateListDrawable类允许您创建drawable,以显示关联视图的状态更改之间的动画。 Android 5.0中的某些系统小部件默认使用这些动画。以下示例显示如何将AnimatedStateListDrawable定义为XML资源:
<!-- res/drawable/myanimstatedrawable.xml -->
<animated-selector
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- provide a different drawable for each state-->
<item android:id="@+id/pressed" android:drawable="@drawable/drawableP"
android:state_pressed="true"/>
<item android:id="@+id/focused" android:drawable="@drawable/drawableF"
android:state_focused="true"/>
<item android:id="@id/default"
android:drawable="@drawable/drawableD"/>
<!-- specify a transition -->
<transition android:fromId="@+id/default" android:toId="@+id/pressed">
<animation-list>
<item android:duration="15" android:drawable="@drawable/dt1"/>
<item android:duration="15" android:drawable="@drawable/dt2"/>
...
</animation-list>
</transition>
...
</animated-selector>