Android ListView项目动画 - 仅动画第一个可见项目

时间:2014-12-03 17:13:13

标签: android listview animation offset

我正在尝试重现此ListView项目:

http://material-design.storage.googleapis.com/videos/components-progressandactivity-progressandactivity-2-drive.mobile-load.folders_large_xhdpi.webm

我已成功使用这些代码行(不计算动画xml文件)来实现它:

//Set animation
    if(position > lastAnimPosition){
        lastAnimPosition = position;

        Animation anim = AnimationUtils.loadAnimation(context, R.anim.item_slide_in);
        anim.setStartOffset(50 * position);
        row.startAnimation(anim);
    }

所以动画很好,但是当我向下滚动时,有偏移的问题 - 它只是巨大的,它让人感觉应用程序加载项目的时间太长了。 我需要做的是找出何时应该禁用偏移量 - 或者如何仅为首次显示的项目启用偏移量。

1 个答案:

答案 0 :(得分:8)

在xml中使用布局动画属性

文档:http://developer.android.com/reference/android/view/ViewGroup.html#attr_android:layoutAnimation

将文件添加到layout_item_slide_in.xml的res / anim文件夹中,该文件夹引用@anim/item_slide_in

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
        android:delay="0.5"
        android:animation="@anim/item_slide_in" />

现在,将listview xml轻微更改为包含android:layoutAnimation属性和值

<ListView
    android:id="@+id/foo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layoutAnimation="@anim/layout_item_slide_in"" />

这将实现您想要的第一个加载动画样式,而无需在代码

中执行此操作