您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: