即使多次调用getView(),也只在getView()内执行一次动画

时间:2015-01-06 05:21:23

标签: android listview animation

我遇到过许多与我类似的问题。 但我有一个稍微不同的问题,我找不到任何答案。

我为ListView编写了一个CustomAdapter。 我想通过为ListView项目实现动画来尝试新的东西。 因此,我实施了类似于Google+卡动画的自下而上动画。 这是动画的代码。

Animation animation = AnimationUtils.loadAnimation(getContext(), (position > lastPosition) ?    R.anim.up_from_bottom : R.anim.down_from_top);
animation.setDuration(400);
rowView.startAnimation(animation);
lastPosition = position;

我已经在CustomAdapter的getView()中编写了这段代码。

在我的应用程序中,我需要两次调用getView()方法。 一切都很好,直到这里。

现在由于多次调用getView()而面临的问题是,卡片动画也会一次又一次地出现,因为我的列表被加载了两次。

如何让我的动画只执行一次?即使它在getView()方法中?

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

GSSListAdapter类构造函数中再添加一个标志,以检查第一次或第二次调用getView方法:

public boolean isShowAnimation=false;

 GSSListAdapter(...,...,boolean isShowAnimation){
  ...
  this.isShowAnimation=isShowAnimation;
 }

现在使用isShowAnimation检查是否在适配器的getView方法中执行动画。