Android列表项在加载时动画一次

时间:2014-11-01 06:04:30

标签: android listview animation

我有一个列表视图,每个项目都会动画显示在视图中。我基本上创建了一个类似于here的Material Design动画的动画。动画如下:

<translate
        android:fromXDelta="0%" android:toXDelta="0%"
        android:fromYDelta="50%" android:toYDelta="0%"
        android:duration="750" />
<alpha
        android:fromAlpha="0.0" android:toAlpha="1.0"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:duration="600"/>

这与一个偏移相结合,使每个行项的淡入时间略晚于前一个(在适配器getView中完成):

 Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.listitem_up);
 animation.setStartOffset(offset);
 row.startAnimation(animation);
 offset += 100;

现在最初创建列表时,一切都是动画的,很好。但是,从滚动中显示的任何后续项目都会有越来越长的偏移量,因为它永远不会重置。我无法弄清楚如何a)在滚动之前重置偏移量,或b)只在初始加载时出现动画一次。

我查看了滚动监听器,但是根据我自己的测试,即使在没有滚动的初始加载时它似乎也会被触发,所以我不太了解它来提出解决方案。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您应该在getView权限中使用此代码吗?

尝试:

Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.listitem_up);
 animation.setStartOffset(position * 100);
 row.startAnimation(animation);

这样,偏移量始终为position * 100,当getView尝试回收/重用该行时,这可能会有所帮助。

编辑:

我发现了这一点,你可能想看看:animate listView childs only once they appear

基本上,他做了同样的事情,比如我的回答,更多的验证。