LayoutAnimation经常作用于ViewGroup,为ViewGroup指定一个动画,则每个item都有这中动画效果,经常用于ListView。
(1)定义LayoutAnimation
layout_animation.xml
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation
xmlns:android="http://schemas.android.com/apk/res/android"
android:animation="@anim/animation_item"
android:animationOrder="normal"
android:delay="0.5">
android:animation——引入动画资源,每个item具有的动画
android:animationOrder——动画的顺序,有三种:normal(正常顺序显示)、reverse(逆向显示)、random(随机显示)
android:delay——时间延迟,比如动画周期是400ms,那么0.5表示每个item动画都需要延迟200ms
animation_item.xml
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="400" android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"/>
<translate
android:fromXDelta="500"
android:toYDelta="0"/>
</set>
(2)在xml文件中使用
activity_thired.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list_person"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#dddbdb"
android:dividerHeight="1dp"
android:background="#fff4f7f9"
android:cacheColorHint="#00000000"
android:listSelector="@android:color/transparent"/>
<!--android:layoutAnimation="@anim/layout_animation"-->
</LinearLayout>
(3)在代码中使用
//加载item动画
Animation animation = AnimationUtils.loadAnimation(ThiredActivity.this,R.anim.animation_item);
//创建LayoutAnimationController
LayoutAnimationController controller = new LayoutAnimationController(animation);
//延迟
controller.setDelay(0.5f);
//播放顺序
controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
//给ListView设置动画
mListPerson.setLayoutAnimation(controller);
(4)完整代码
package com.zhoujian.animation;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.InjectView;
/**
* Created by zhoujian on 2016/12/12.
*/
public class ThiredActivity extends Activity {
private ArrayList<Person> list;
@InjectView(R.id.list_person)
ListView mListPerson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thired);
ButterKnife.inject(this);
//加载动画
Animation animation = AnimationUtils.loadAnimation(ThiredActivity.this,R.anim.animation_item);
//创建LayoutAnimationController
LayoutAnimationController controller = new LayoutAnimationController(animation);
//延迟
controller.setDelay(0.5f);
//播放顺序
controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
//给ListView设置动画
mListPerson.setLayoutAnimation(controller);
list = new ArrayList<Person>();
Person person1 = new Person("贾宝玉");
list.add(person1);
list.add(person1);
Person person2 = new Person("林黛玉");
list.add(person2);
list.add(person2);
Person person3 = new Person("薛宝钗");
list.add(person3);
list.add(person3);
Person person4 = new Person("王熙凤");
list.add(person4);
list.add(person4);
Person person5 = new Person("史湘云");
list.add(person5);
list.add(person5);
Person person6 = new Person("贾探春");
list.add(person6);
list.add(person6);
BaseAdapter adapter = new BaseAdapter() {
@Override
public int getCount()
{
return list.size();
}
@Override
public Object getItem(int i)
{
return null;
}
@Override
public long getItemId(int i)
{
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup group) {
View view;
final ViewHolder holder;
if (convertView != null) {
view = convertView;
holder = (ViewHolder) view.getTag();
} else {
view = View.inflate(ThiredActivity.this, R.layout.list_item, null);
holder = new ViewHolder();
holder.tv_name = (TextView) view.findViewById(R.id.tv_name);
view.setTag(holder);
}
if (list != null && list.size() > 0) {
holder.tv_name.setText(list.get(position).getName());
}
return view;
}
};
mListPerson.setAdapter(adapter);
}
class ViewHolder {
TextView tv_name;
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
(5)效果图