GridView加载数据时的动画效果
2015-11-26 11:48
369 查看
翻看一款应用的时候看到数据内容飞入屏幕的效果比较炫,研究了一下实现,在此仅作记录供参考。
在Android的组件中,ListView和GridView都有一个属性android:layoutAnimation"。它就是用来给每一个Item来统一设置动画的。
1 、 给这个属性赋值一个anim文件,名字为gridViewAnim。内容为下
<?xml version="1.0" encoding="utf-8"?> <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/anim_gridview_left_enter" android:animationOrder="normal" android:delay="0.5" />
delay:代表子类动画时间间隔,单位为秒
animationOrder:取值 normal,reverse(倒序),random(随机)。
2 、 动画文件anim_gridview_left_enter的内容:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="800" android:fromXDelta="150%" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="0%" /> <!-- <alpha android:duration="1000" android:fromAlpha="0" android:toAlpha="1" /> --> <!-- <rotate android:duration="5000" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:fillAfter="true" android:toDegrees="180" /> --> <!-- <scale android:duration="500" android:fromXScale="0.5" android:toXScale="1" android:pivotX="0%" android:pivotY="50%" android:fromYScale="0" android:toYScale="1" /> --> </set>
3 除了设置android:layoutAnimation属性外,还可通过代码动态添加
Animation animation = AnimationUtils.loadAnimation(this, R.anim.list_anim); // 得到一个LayoutAnimationController对象; LayoutAnimationController lac = new LayoutAnimationController(animation); // 设置控件显示的顺序; lac.setOrder(LayoutAnimationController.ORDER_REVERSE); // 设置控件显示间隔时间; lac.setDelay(1); // 为ListView设置LayoutAnimationController属性; datalist.setLayoutAnimation(lac);
4 如果需要给每个Item添加效果不同,可以在Adapter的getView方法进行区分。以两栏的GridView左右动画不同为例。
Animation left = AnimationUtils.loadAnimation(context, R.anim.anim_gridview_left_enter); Animation right = AnimationUtils.loadAnimation(context, R.anim.anim_gridview_right_enter); if(arg0%2==0){ arg1.setAnimation(left); }else{ arg1.setAnimation(right); }
两个布局文件
<translate android:duration="800" android:fromXDelta="150%" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="0%" />
<translate android:duration="500" android:fromXDelta="300%" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:toXDelta="0%" />
参考
http://blog.csdn.net/imdxt1986/article/details/6952943
相关文章推荐
- 使用Highcharts结合PHP与Mysql生成饼状图
- 《读书笔记》系列2:TCP/IP详解
- ImageZipUtil
- csharp:百度翻译
- IIS部署FTP服务器步骤
- u3d 发布的程序 窗口位置的改变
- autotool 交叉编译
- 这个错误,每个ScrumMaster都犯过
- ios审核加急
- csharp:百度翻译
- 这个错误,每个ScrumMaster都犯过
- UITableVIew 编辑
- 数据分析写作——程序员的另外一种输出
- 提示框插件SweetAlert
- WebService基于SoapHeader的安全性保证
- Hibernate
- SlidingMenu如何导入Android Studio
- 浅谈Supermap iClient for JavaScript弹窗类
- 【移动开发】ListView的setSelection()和setSelectionFromTop()联系
- Linux下Mysql5.5.28的安装