动画列表项目与动画

时间:2013-12-09 11:26:23

标签: android android-fragments android-animation

我有一个包含ListView的多个页面的Activity。我使用适配器来自定义列表项。每个项目都会动画到列表中:

public View getView(int i, View view, ViewGroup viewGroup) {
    if (view == null) {
        v = inflater.inflate(R.layout.list_item, null);
        doTheThing = true;
    }

    //Some random code here

    if(doTheThing) {
        Animation animation = AnimationUtils.loadAnimation(a, R.anim.list_item_animation);
        animation.setStartOffset(i * 60 + 200);
        v.startAnimation(animation);
    }

    return v;
}

通过这种设置我有两个问题。第一个是,当我向左或向右滚动两页以上的动画重复时,它应该只在第一次打开活动时运行。第二个问题是,如果我快速滚动列表,有一些项目会暂时丢失,然后它们会重新生成。它总是随机的,当它们全部加载时,它不会再发生。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

基于“doTheThing”来判断convertView是否为null并不完全是确定性的。

适配器不保证是否/何时会回收视图,以及何时为您提供新视图。

当然,您可以保证在列表视图中获得第一页视图的新视图。但是,适配器可能会决定突然需要4个视图而不是3个以保持平滑滚动,在这种情况下,您将获得view == null,并触发动画。

我建议依靠更确定的方式来决定要制作动画的视图。例如,在被检索的第一个视图的500毫秒内检索的所有视图都将被设置动画等等。