ListView动画刷新适配器Android

4
我有一个带有适配器的ListView。当我在ListView上点击一个项目时,适配器被清除并填充了新内容。我想应用两种动画,一种是当适配器被清除时(从适配器中移除的项向左滑动),另一种是当新项目添加到适配器中时(新元素向右滑动)。

因此,我希望在单击项目时执行以下操作:

listView.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_to_left));    
clearAdapter();    
listView.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_to_right));    
setItems(newItemList);//Refresh adapter with new items

我的问题是只有第二个动画被显示出来。
你们有什么建议吗,我做错了什么或者为什么不起作用?
谢谢。
解决方案
我已经解决了这个问题,添加一个动画监听器就可以了,像下面这样。
    Animation animationOut = AnimationUtils.loadAnimation(context, R.anim.slide_to_left);
    animationOut.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
            clearAdapter();
        }

        @Override
        public void onAnimationEnd(Animation animation) {
        listView.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_to_right));
                setItems(newList);// update content adapter
            }
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });
  listView.startAnimation(animationOut);

有没有一种方法可以同时显示两个动画?在我们清除适配器并将它们向左滑动时,新的列表内容将以动画的方式从右侧进入。
1个回答

0

将第二个动画代码(最后两行)注释掉,然后查看第一个动画是否正常工作。如果正常工作,则尝试在第一个动画和第二个动画之间添加几秒钟的Thread.sleep。


我认为使用线程来检查第一个动画是否完成并不是一个好的方法,应该有更好的方式。 - julio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接