有两种用法,我的通常写在代码中,像下面这样:

Java代码  
  1. /**
  2. * Layout动画
  3. *
  4. * @return
  5. */
  6. protected LayoutAnimationController getAnimationController() {
  7. int duration=300;
  8. AnimationSet set = new AnimationSet(true);
  9. Animation animation = new AlphaAnimation(0.0f, 1.0f);
  10. animation.setDuration(duration);
  11. set.addAnimation(animation);
  12. animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,
  13. Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
  14. -1.0f, Animation.RELATIVE_TO_SELF, 0.0f);
  15. animation.setDuration(duration);
  16. set.addAnimation(animation);
  17. LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f);
  18. controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
  19. return controller;
  20. }

应用的时候只需这样:

Java代码  
  1. listView = (ListView) findViewById(R.id.listView);
  2. listView.setLayoutAnimation(getAnimationController());
  3. adapter = new ListViewAdapter(stores);
  4. listView.setAdapter(adapter);

这样一个简单的LayoutAnimation就完成了。

别看到这里就以为文章就完了,以上都是些小玩意。呵呵,还有更厉害的!

你想设置更炫的动画吗?LayoutAnimation通常是Item一个一个的出现,有某种规律的。想让每个Item都有自己的动画吗?那就继续看下去。

Java代码  
  1. .......
  2. private int duration=1000;
  3. private Animation push_left_in,push_right_in;
  4. private Animation slide_top_to_bottom,slide_bottom_to_top;
  5. public ListViewAdapter(ArrayList<Store> list) {
  6. this.list = list;
  7. push_left_in=AnimationUtils.loadAnimation(context, R.anim.push_left_in);
  8. push_right_in=AnimationUtils.loadAnimation(context, R.anim.push_right_in);
  9. slide_top_to_bottom=AnimationUtils.loadAnimation(context, R.anim.slide_top_to_bottom);
  10. slide_bottom_to_top=AnimationUtils.loadAnimation(context, R.anim.slide_bottom_to_top);
  11. }
  12. ........
  13. @Override
  14. public View getView(int position, View convertView, ViewGroup parent) {
  15. // TODO Auto-generated method stub
  16. ViewHodler hodler;
  17. if (convertView == null) {
  18. hodler = new ViewHodler();
  19. convertView = LayoutInflater.from(context).inflate(
  20. R.layout.simple_item_7_for_main, null);
  21. ........
  22. convertView.setTag(hodler);
  23. if (position % 2 == 0) {
  24. push_left_in.setDuration(duration);
  25. convertView.setAnimation(push_left_in);
  26. } else {
  27. push_right_in.setDuration(duration);
  28. convertView.setAnimation(push_right_in);
  29. }
  30. /*if(position==0){
  31. slide_bottom_to_top.setDuration(duration);
  32. convertView.setAnimation(slide_bottom_to_top);
  33. }
  34. else{
  35. slide_top_to_bottom.setDuration(duration);
  36. convertView.setAnimation(slide_top_to_bottom);
  37. }*/
  38. }else{
  39. hodler = (ViewHodler) convertView.getTag();
  40. }
  41. ........
  42. return convertView;
  43. }

看见上面的动画设置了吗?将动画写在getView()中,这样可以设置很多不同的动画。其实这不属于LayoutAnimation的范畴了。 
你可以试一下,如果设计好的话,可以有比LayoutAnimation更酷的效果。 
我这里只试了两种效果。 
下面是我的动画文件,共四个: 
第一种效果:item分别从左右两侧滑入效果。 
push_left_in.xml

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="300"/>
  4. <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
  5. </set>

push_right_in.xml

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>
  4. <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
  5. </set>

第2种效果:第一个item从下往上滑入,其他Item从上往下滑入效果,这个效果如果单个Item比较高(height)的话效果非常酷(卡牛的老版本好像用的就是这种效果)。 
slide_bottom_to_top.xml

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
  3. <translate android:fromYDelta="100%" android:toXDelta="0" android:duration="300" />
  4. <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
  5. </set>

slide_top_to_bottom.xml

Xml代码  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
  3. <translate android:fromYDelta="-100%" android:toXDelta="0" android:duration="300" />
  4. <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
  5. </set>

另外一篇: 
这个不是我写的。 
GridView的item从上下左右飞入

Java代码  
  1. import java.util.Random;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.os.Bundle;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.view.ViewGroup;
  9. import android.view.animation.Animation;
  10. import android.view.animation.TranslateAnimation;
  11. import android.widget.BaseAdapter;
  12. import android.widget.Button;
  13. import android.widget.GridView;
  14. import android.widget.ImageView;
  15. public class ZdemoActivity extends Activity {
  16. private GridView gv;
  17. private Button btn;
  18. private TranslateAnimation taLeft, taRight, taTop, taBlow;
  19. private int[] imgList = new int[15];
  20. private MyAdapter mAdapter;
  21. private LayoutInflater mInflater;
  22. @Override
  23. public void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26. this.InitView();
  27. this.InitAnima();
  28. this.InitData();
  29. }
  30. private void InitAnima() {
  31. // TODO Auto-generated method stub
  32. taLeft = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 1.0f,
  33. Animation.RELATIVE_TO_PARENT, 0.0f,
  34. Animation.RELATIVE_TO_PARENT, 0.0f,
  35. Animation.RELATIVE_TO_PARENT, 0.0f);
  36. taRight = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -1.0f,
  37. Animation.RELATIVE_TO_PARENT, 0.0f,
  38. Animation.RELATIVE_TO_PARENT, 0.0f,
  39. Animation.RELATIVE_TO_PARENT, 0.0f);
  40. taTop = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f,
  41. Animation.RELATIVE_TO_PARENT, 0.0f,
  42. Animation.RELATIVE_TO_PARENT, 1.0f,
  43. Animation.RELATIVE_TO_PARENT, 0.0f);
  44. taBlow = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f,
  45. Animation.RELATIVE_TO_PARENT, 0.0f,
  46. Animation.RELATIVE_TO_PARENT, -1.0f,
  47. Animation.RELATIVE_TO_PARENT, 0.0f);
  48. taLeft.setDuration(1000);
  49. taRight.setDuration(1000);
  50. taTop.setDuration(1000);
  51. taBlow.setDuration(1000);
  52. }
  53. private void InitData() {
  54. // TODO Auto-generated method stub
  55. for (int i = 0; i < 15; i++) {
  56. imgList[i] = R.drawable.ic_launcher;
  57. }
  58. mAdapter = new MyAdapter();
  59. gv.setAdapter(mAdapter);
  60. }
  61. private void InitView() {
  62. // TODO Auto-generated method stub
  63. gv = (GridView) findViewById(R.id.gridView1);
  64. btn = (Button) findViewById(R.id.button1);
  65. btn.setOnClickListener(new OnClickListener() {
  66. @Override
  67. public void onClick(View v) {
  68. // TODO Auto-generated method stub
  69. mAdapter = null;
  70. mAdapter = new MyAdapter();
  71. gv.setAdapter(mAdapter);
  72. mAdapter.notifyDataSetChanged();
  73. }
  74. });
  75. mInflater = (LayoutInflater) this
  76. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  77. }
  78. private class MyAdapter extends BaseAdapter {
  79. @Override
  80. public int getCount() {
  81. // TODO Auto-generated method stub
  82. return imgList.length;
  83. }
  84. @Override
  85. public Object getItem(int position) {
  86. // TODO Auto-generated method stub
  87. return imgList[position];
  88. }
  89. @Override
  90. public long getItemId(int position) {
  91. // TODO Auto-generated method stub
  92. return position;
  93. }
  94. @Override
  95. public View getView(int position, View convertView, ViewGroup parent) {
  96. // TODO Auto-generated method stub
  97. ViewHolder holder = null;
  98. if (convertView == null) {
  99. convertView = mInflater.inflate(R.layout.item, null);
  100. holder = new ViewHolder();
  101. holder.image = (ImageView) convertView
  102. .findViewById(R.id.imageView1);
  103. convertView.setTag(holder);
  104. } else {
  105. holder = (ViewHolder) convertView.getTag();
  106. }
  107. int imgID = imgList[position];
  108. holder.image.setImageResource(imgID);
  109. Random ran = new Random();
  110. int rand = ran.nextInt(4);
  111. switch (rand) {
  112. case 0:
  113. convertView.startAnimation(taLeft);
  114. break;
  115. case 1:
  116. convertView.startAnimation(taRight);
  117. break;
  118. case 2:
  119. convertView.startAnimation(taTop);
  120. break;
  121. case 3:
  122. convertView.startAnimation(taBlow);
  123. break;
  124. }
  125. return convertView;
  126. }
  127. class ViewHolder {
  128. public ImageView image;
  129. }
  130. }
  131. }

转载于:https://www.cnblogs.com/visuals/p/5091838.html

listview添加item动画相关推荐

  1. Android添加item动画,RecyclerView基础篇-Item添加动画

    Android_Banner.jpg 简介 本节中我们介绍下给RecyclerView中的Item添加动画. 添加的动画,分为,在打开列表时有Item的展示动画,当滑动的时候没有动画 和打开列表滑动时 ...

  2. android listview remove 动画,给Android ListView添加删除item动画

    给Android ListView添加删除item动画 给listview删除一个item的时候加上一个折叠动画,感觉效果会好一点. 步骤是当删除一个view,先用动画把view的高度改变,看上去就是 ...

  3. android 部分区域点击,Android编程实现ListView中item部分区域添加点击事件功能

    本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能.分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在 ...

  4. android listview里item添加一个按钮点击事件,ListView Item点击事件跳转详情界面

    有好久都没有碰安卓了,考试加五一双组合也真是让人蛋疼.好在都平安的度过了,所以又有时间gun回来弄弄我的小博客(虽然没多少人看= =).看了之前做的几个小demo,模式都差不多,但是每次写的时候都要在 ...

  5. listView 的item最外层添加了layout_marginLeft不管用

    listView  的item最外层添加了layout_marginLeft=@dimen/l_34px不管用,解决办法: 添加一个 LinearLayout 把layout_marginLeft=@ ...

  6. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)...

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...

  7. ListView的item展开后完整显示

    手机屏幕毕竟有限,当我们要显示较多数据时便不得不舍去一些次要信息,将主要信息优先显示,也使显示效果更加简洁美观.遇到类似的需求,我们使用最多的就是 ListView ,而如果每次点击一个 Item 都 ...

  8. 三星TouchWiz之listview单个Item左右滑动深入剖析(二)——实践篇

    思路篇里面,我们已经知道实现左右滑动功能的思路. 开宗明义,先上demo整体结构图.(零警告看着很舒服有木有O(∩_∩)O~) 三种状态的效果图(从左至右依次是初始状态,左滑状态,右滑状态)     ...

  9. android ui动画效果怎么做,AndroidUI 布局动画-为列表添加布局动画效果

    新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...

  10. Android在listview添加checkbox实现单选多选操作问题

    android根据View的不同状态更换不同的背景 http://www.eoeandroid.com/thread-198029-1-1.html android 模仿朋友网推出的菜单效果[改进版] ...

最新文章

  1. maven打成jar包后,其他工程导入不进去
  2. python使用界面-python 可视化界面
  3. win10安装misql8_Win10安装MySQL8压缩包版的教程
  4. #1097 : 最小生成树一·Prim算法
  5. jQuery—tab栏切换
  6. leetcode 477. 汉明距离总和(位运算)
  7. Java工作笔记-对反射的进一步理解
  8. python在文件中写入字典_python初学--文件操作、字典
  9. python web中的并发请求
  10. [转]SAP行业知识Qamp;A一览表
  11. P-Associated-URI
  12. python中使用frame需要安装_python – 在SFrame中分组而不安装graphlab
  13. 如何优雅地使用迅雷下载百度云大文件?
  14. 赋值pingfang(i)=x; 与或非
  15. Linux网络服务-LAMP之Php基于Apache的模块实现
  16. 从零开始使用Vscode调试XV6
  17. python中续行符号_Python 的续行标志是( )_大学英语(2)答案_学小易找答案
  18. 电脑打印机老是文档挂起无法打印怎么办
  19. Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读
  20. vue使用阿里字体教程(引入外部字体)

热门文章

  1. python将txt文档中的内容按字母顺序进行排序,并存入txt中
  2. HDU 4455 Substrings(线性dp,很有意思)
  3. MSDN官方数据库开发群
  4. 安装篇——nginx安装ssl模块转发https请求
  5. BZOJ1934: [Shoi2007]Vote 善意的投票
  6. 剑指offer--二叉树中和为某一值得路径
  7. web基础知识梳理(笔记)
  8. 使用Microsoft R Server进行机器学习和模型发布(2)
  9. 网络对抗——web基础
  10. AngularJs + angular-ui-router + bootstrap 实现blog基础导航功能