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)效果图
- Android 动画之LayoutAnimation
- Android动画之LayoutAnimation
- Android动画效果之:LayoutAnimation
- Android动画学习之LayoutAnimation三
- Android 动画之LayoutAnimation和LayoutTransition
- Android 布局动画之LayoutAnimation与LayoutTransition
- Android动画之layoutAnimation与gridLayoutAnimation
- Android动画--布局动画 LayoutAnimation
- Android动画--布局动画 LayoutAnimation
- Android的Animation之LayoutAnimation使用方法(控件设置动画)
- Android - LayoutAnimation 动画效果 - 示例
- android动画--layoutAnimation与gridLayoutAnimation
- LayoutAnimation动画
- layoutAnimation动画
- layoutAnimation动画
- Android动画三部曲之一 View Animation & LayoutAnimation
- Android-LayoutAnimation(布局动画)的学习
- Android中的动画(二)LayoutAnimation
- Web Service 的创建简单编码、发布和部署
- debian 8 安装 jenkins
- python初步实现word2vec
- Linux System and Performance Monitoring(Network篇)
- 上拉和下拉电阻作用
- Android动画之LayoutAnimation
- android下拉菜单三级联动
- Linux System and Performance Monitoring(总结篇)
- Android中的Binder机制的简要理解
- 使用Dynamic Shortcuts
- Java EE项目中异常设计及处理总结
- 【Visual Studio】VS 工程目录与文件
- JQuery----倒计时插件downCount
- ionic开发介绍之SASS介绍