LayoutAnimation
前面属性动画讲了如何给控件实现动画,而LayoutAnimation就是为容器实现统一动画的
XML文件实现
- 在res/anim/下
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="1"
android:animationOrder="normal"
android:animation="@anim/slide_in_left"/>
* delay:指每个Item的动画开始延时,取值是android:animation所指定动画时长的倍数,取值类型可以是float类型,也可以是百分数,默认是0.5;比如我们这里指定的动画是@anim/slide_in_left,而在slide_in_left.xml中指定android:duration=”1000”,即单次动画的时长是1000毫秒,而我们在这里的指定android:delay=”1”,即一个Item的动画会在上一个item动画完成后延时单次动画时长的一倍时间开始,即延时1000毫秒后开始。*
animationOrder:指viewGroup中的控件动画开始顺序,取值有normal(正序)、reverse(倒序)、random(随机)
animation:指定每个item入场所要应用的动画。仅能指定res/aim文件夹下的animation定义的动画,不可使用animator动画。
2.在容器控件布局文件的layoutanimation属性中引入layoutAnimationXML文件。
代码实现
XML文件的layoutanimation标签对应的内饰LayoutAnimationController,构造函数为:
public LayoutAnimationController(Animation animation)
public LayoutAnimationController(Animation animation, float delay)
对应标签中的android:animation属性,delay对应标签中的android:delay属性。
其他属性对应方法为:
/**
* 设置animation动画
*/
public void setAnimation(Animation animation)
/**
* 设置单个item开始动画延时
*/
public void setDelay(float delay)
/**
* 设置viewGroup中控件开始动画顺序,取值为ORDER_NORMAL、ORDER_REVERSE、ORDER_RANDOM
*/
public void setOrder(int order)
代码实现,就不需要写layoutanimation标签了,只需要写animatin动画xml文件或者也代码实现就OK了。不如listView实现item动画。
“`
//代码设置通过加载XML动画设置文件来创建一个Animation对象;
Animation animation= AnimationUtils.loadAnimation(this,R.anim.slide_in_left); //得到一个LayoutAnimationController对象;
LayoutAnimationController controller = new LayoutAnimationController(animation); //设置控件显示的顺序;
controller.setOrder(LayoutAnimationController.ORDER_REVERSE); //设置控件显示间隔时间;
controller.setDelay(0.3f); //为ListView设置LayoutAnimationController属性;
mListView.setLayoutAnimation(controller);
mListView.startLayoutAnimation();
““