【问题标题】:Perform animation only once inside getView() , even if getView() is called multiple times在 getView() 内只执行一次动画,即使 getView() 被多次调用
【发布时间】:2015-01-06 13:45:18
【问题描述】:

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

我为我的 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() 方法中?

有没有办法做到这一点?

【问题讨论】:

  • 您可以在适配器中发送任何标志,并根据标志值执行动画内容
  • @Anjali,我尝试这样做,但我仍然得到相同的结果。一个列表是从网络调用加载的,同时另一个列表是从我通过意图传递的数据加载的。所以 getView() 被调用了两次。
  • @ShrutiDasgopal:你怎么又给getView()打电话了?
  • 你能分享你的代码吗?
  • @ρяσѕρєяK,我不再调用 getView()。只是我将列表(一个来自网络调用,另一个来自意图)存储在“mListOfItems”中。 customListAdapter = new GSSListAdapter(ListViewGalaxkeySecure.this, mListOfItems); mListView.setAdapter(customListAdapter);

标签: android listview animation


【解决方案1】:

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

public boolean isShowAnimation=false;

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多