1

我正在使用来自 API DEMOS 的列表视图动画,示例 2。这是 OnCreate 方法的片段:

ListView listview = (ListView) findViewById(android.R.id.list);

AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(50);
set.addAnimation(animation);

animation = new TranslateAnimation(
    Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
    Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f);

animation.setDuration(200);
set.addAnimation(animation);

LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f);
listview.setLayoutAnimation(controller);

在将来的某个时候,notifyDataSetInvalidated()调用列表的适配器,我的列表被刷新。但这些项目不再以动画形式显示。

请帮忙。

4

2 回答 2

3

If you want to reanimate your LayoutController after your data set changes, call the method startLayoutAnimation() of the view.

于 2011-06-16T13:04:49.950 回答
0

您应该查看此线程,了解notifyDataSetChanged() 和 notifyDataSetInvalidated() 之间的区别(链接已更新以指向 Romain Guy 的答案!)

简而言之,区别在于:

  • notifyDataSetChanged:数据集中的项目已更改(添加/删除/更新/重新排序,无论如何)。
  • notifyDataSetInvalidated:适配器的数据源不再可用。

在这里notifyDataSetInvalidated您可以找到一个正在使用的功能示例。可能它也会解决您的动画问题。

于 2011-04-15T17:39:22.030 回答