当mMaxVisible小于等于2时,下移动画会无限循环调用
little4-lee opened this issue · comments
李小四 commented
如题
chiemy commented
如果最大显示两个,子视图从顶部到底部我们依次称为 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()
方法中的动画监听置空