Android动画之LayoutAnimation

来源:互联网 发布:js new date gmt 编辑:程序博客网 时间:2024/05/20 06:54

LayoutAnimation经常作用于ViewGroup,为ViewGroup指定一个动画,则每个item都有这中动画效果,经常用于ListView。

(1)定义LayoutAnimation
layout_animation.xml

<?xml version="1.0" encoding="utf-8"?><layoutAnimationxmlns: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"?><setxmlns: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)效果图

这里写图片描述

0 0
原创粉丝点击