Android ListView item项 显示动画

时间:2021-02-17 05:17:20

(1)使用LayoutAnimation

所谓的布局动画,其实就是为ViewGroup添加显示动画效果,主要用过LayoutAnimationController来控制实现。LayoutAnimationController用于为一个Layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果,可以在XML文件中设置,亦可以在Java代码中设置。

注意:布局动画是在android布局发生变化时添加动画效果,layout动画在每次布局发生变化的时候系统调用的一个预加载动画效果,使用layout动画可以让布局的变化过度看起来更自然

  1. 通过创建xml文件,其中list_anim在res/anim/list_anim.xml:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true" > <alpha
android:duration="1000"
android:fromAlpha="0.0"
android:toAlpha="1.0" /> </set>

  2. 为ListView的layoutAnimation创建list_anim_layout.xml:

 <?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="2"
android:animationOrder="normal"
android:animation="@anim/list_anim"/>
 <ListView
...
...4 android:layoutAnimation="@anim/list_anim_layout"/>
 // 在代码中实现列表动画
Animation animation = (Animation) AnimationUtils.loadAnimation(
mContext, R.anim.list_anim);
LayoutAnimationController lac = new LayoutAnimationController(animation);
lac.setDelay(0.4f); //设置动画间隔时间
lac.setOrder(LayoutAnimationController.ORDER_NORMAL); //设置列表的显示顺序
mListView.setLayoutAnimation(lac); //为ListView 添加动画

(2)通过 Adapter.getView() 方法

    通过getView(int position, View convertView, ViewGroup parent) 返回的 view,进行对其动画操作就可。

e.g. :水平向上移动并翻转360度。

 ObjectAnimator.ofFloat(convertView, "translationY", 400, 0).setDuration(1000).start();
ObjectAnimator.ofFloat(convertView, "rotationX", 360, 0).setDuration(1000).start();

参考:Layout动画:在android布局发生变化时添加动画效果

Android的Animation之LayoutAnimation使用方法

Android 从布局动画引入ListView滑动时,每一Item项的显示动画