产品需求让在列表中加入滚动动画,仿照IOS效果,效果实现了,但是有个Bug,滚动到指定位置后,又滚回第一个位置了……
没想明白原因:
int startPosition=mListView.getFirstVisiblePosition(); final int endposition=msg.arg1; if(startPosition ==0 || (startPosition!=elderPosition)){ if (startPosition == 0) { // mListView.smoothScrollToPosition(1);//会引起回弹 startPosition += 1; } ValueAnimator anim = ValueAnimator.ofInt(startPosition,endposition); anim.setDuration(300); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mListView.setSelection((Integer) animation.getAnimatedValue()); if ((Integer) animation.getAnimatedValue() == endposition) { elderPosition = mListView.getFirstVisiblePosition(); } } }); anim.start();
本文探讨了一个在列表中实现滚动动画时遇到的Bug,即滚动到特定位置后,元素会意外返回到初始位置的问题。通过分析代码并提供解决方案,详细解释了如何在保持iOS风格滚动效果的同时,避免元素回跳至起始位置,从而提升用户体验。
392

被折叠的 条评论
为什么被折叠?



