从布局动画引入ListView滑动时,每一Item项的显示动画
来源:互联网 发布:mysql 生成连续数字 编辑:程序博客网 时间:2024/06/05 16:10
原文地址:http://blog.csdn.net/zuiwuyuan/article/details/48010197
今天我主要给大家引入一个APP的ListView的动画效果: 当展示ListView时,Listview的每一个列表项都按照规定的动画显示出来。
说起来比较抽象,先给大家看一个动画效果,这是APP窝牛装修的ListView显示动画:
有木有觉得很酷炫?有木有啊!?
一、Layout Animation
所谓的布局动画,其实就是为ViewGroup添加显示动画效果,主要用过LayoutAnimationController来控制实现。LayoutAnimationController用于为一个Layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果,可以在XML文件中设置,亦可以在Java代码中设置。
1.1 在XML文件中设置布局动画
首先,我们在res/anim文件夹下建立一个list_anim_layout.xml文件,该文件就是布局动画控制器。
android:delay 子类动画时间间隔 (延迟) 70% 也可以是一个浮点数 如“1.2”等。
android:animationOrder="random" 子类的显示方式 random表示随机。
android:animationOrder 的取值有
normal 0 默认
reverse 1 倒序
random 2 随机
android:animation="@anim/slide_right" 表示列表项显示时的具体动画是什么!
下面,我们定义每一个列表项显示时的动画效果吧,及slide_right.xml:
显示的效果为ListView第一次出现的时候为 item随机出现 每个Item都是从右边的区域向左滑动到显示的地方。
接下来,你只需要把这个布局动画,指定到ViewGroup上就好了:
就这么简单就完成了,快来看下效果吧:
1.2 在Java代码中实现布局动画
在Java代码中实现布局动画并无难度,只要熟悉几个API的使用即可。 关于动画的定义和上文一致,只是,你不需要再在把控制动画应用到listview中了,即android:layoutAnimation="@anim/list_anim_layout"这行代码可以删除。
接下来,需要在Java代码中进行配置:
介绍到这里,可能有人会有疑问了,博文一开始介绍的“窝牛装修”的那种效果,是每一个列表项显示的时候才会显示动画。我们这个确实所有的列表项的动画一起都显示了,只是显示顺序不同而已。 通过我们这种方法,怎么可能会达到那种效果呢?
确实,通过布局动画,没办法控制每一个Item在加载时才显示动画。那该如何是好呢?
兄弟们,换个思路吧,如果布局动画完成不了,何必不直接用简单的补间动画,再结合每个列表项的显示控制,来实现窝牛装修列表显示的效果呢?
那有人会问了,怎么知道每一个列表项何时才加载么?
你难道忘了BaseAdapter的getView()方法了么?
没错,每当一个列表项显示时,都会主动调用BaseAdaper的getView()方法。
二、仿窝牛装修List列表的动画效果
首先,我们定义一个动画资源,该动画即是列表项显示时的动画:woniu_list_item.xml
该平移动画表示,从下往上,垂直平移100px,时间为500毫秒。
接下来,我们需要在BaseAdapter的getView()方法里,去使用该动画:
我们来简要分析应用动画的地方: 1、我们Adapter的构造方法里加载了之前定义的动画,活的Animation对象。 2、 我们在getView方法里,为convertView设置并启动Animation,即convertView.startAnimation(animation)。
够简单吧,只是这么两行代码,就可以实现在加载每一个View Item时启动动画效果。
可是,我们发现,这并不是非常完美的实现,为啥这么说呢?
因为你此刻往上滑动列表,会发现,已经加载过的Item的动画还会再次启动执行一次。这个体验太糟糕了。为啥会出现这种情况啊?
因为getVIew方法的调用时机会对动画产生影响。Adapter中的getView方法,会在每一个item处于可见状态时调用,所以无论你上滑还是下滑,都会重复调用getView方法(这也是ListView为啥在使用时要进行优化的地方)。
所以,为了解决刚刚发生的问题,我们可以设置标识,进行判断,已经加载过的view的动画不再进行启动加载。
完整的代码如下:
看到了么,加了一个isFirst进行判断,这样,就可以有效控制动画的显示了。效果如下:
结束:
本文我主要介绍了两个部分,一个是Layout Animation布局动画,使用布局动画可以控制VIew Groups中的每一个数据的显示动画; 还一个就是实战,仿“窝牛装修”ListView滑动时每一个Item滑动进入可见状态的动画效果。通过这两个动画示例,我相信可以帮助大家更好的处理动画,克服“动画恐惧症”。
源码下载地址(免费):http://download.csdn.net/detail/zuiwuyuan/9051895
- 从布局动画引入ListView滑动时,每一Item项的显示动画
- 从布局动画引入ListView滑动时,每一Item项的显示动画
- Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画
- listview的item动画
- SwipeLayout 类似ListView item滑动删除动画
- listView 的item添加动画
- ListView的item删除动画
- ListView删除Item的动画
- ListView的item动画效果
- ListView的Item显示动画的简单实现
- ListView GridView中item加载显示的动画效果
- 模仿android4.0的 通知栏 listview 滑动删除 item ,有滑动动画。
- 模仿android4.0的通知栏listview滑动删除item ,有滑动动画
- 模仿android4.0的通知栏listview滑动删除item ,有滑动动画。
- 模仿android4.0的 通知栏 listview 滑动删除 item ,有滑动动画
- 模仿android4.0的 通知栏 listview 滑动删除 item ,有滑动动画。
- ListView item 动画
- 当滑动ListView时,让当前最后可见的Item在滑进屏幕时有一个推进动画效果~
- apache commons fileupload 1.3.1(一)Mime部分
- Genymotion配置及使用教程(最新最完整版附各部分下载地址)
- div表格定高垂直居中,水平居中
- git常用命令之git branch, checkout使用说明
- 关于Eclipse自动补全的问题
- 从布局动画引入ListView滑动时,每一Item项的显示动画
- iOS自定义UITableCell自定义分割线消失问题
- iOS应用开发中的文字选中操作控件UITextView用法讲解
- c++实验2-正整数类
- C++程序文档生成器介绍(doxygen)
- Centos7安装netmap
- OC从入门到精通-1.类和对象
- 263. Ugly Number
- 开源搜索引擎评估-lucene sphinx elasticsearch