chiemy / CardView

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

当mMaxVisible小于等于2时,下移动画会无限循环调用

little4-lee opened this issue · comments

如题

如果最大显示两个,子视图从顶部到底部我们依次称为 A , B,因为视图会被复用,所以 CardView 中有且仅有这两个视图对象。
在滑动 A 时,A 会执行一个移除的动画,同时为这个动画设置一个结束的监听,以便结束时执行把其他视图前移的动画。
动画结束后,此时 CardView 中的子视图顺序变为了 B,A,当我们再次滑动时,A 会执行一个前移动画,其实这个前移动画和之前的移除动画在 API>=14 时是一个对象,都是通过视图的view.animate() 获取的,源码:

public ViewPropertyAnimator animate() {
        if (mAnimator == null) {
            mAnimator = new ViewPropertyAnimator(this);
        }
        return mAnimator;
}

所以如果前移动画不设置监听的话,还会触发之前的监听事件,所以就会循环往复。

解决办法:将 CardView 中bringToTop()方法中的动画监听置空