Open WhySRZ opened 4 years ago
CoverFlowLayoutManger中mSlectPositon计算存在bug private void onSelectedCallBack() { mSelectPosition = Math.round (mOffsetAll / getIntervalDistance()); mSelectPosition = Math.abs(mSelectPosition % getItemCount()); if (mSelectedListener != null && mSelectPosition != mLastSelectPosition) { mSelectedListener.onItemSelected(mSelectPosition); } mLastSelectPosition = mSelectPosition; }
当mSelectPositon为负数时,会出现位置对不上,比如我有5个条目,当mSelectPosition为-6,Math.abs(mSelectPosition % getItemCount())计算结果为1,但事实对应的条目应该是4,当mSelectPosition为负数时正确的位置计算应该为应为 mSelectPosition = 条目个数和(list.size())+mSelectPosition % getItemCount()
list.size())+mSelectPosition % getItemCount()
牛逼,但是还有一种偶现情况 为负数的时候,计算完mSelectPosition =getItemCount(),此时应该置位0,还需要再优化。
/**
CoverFlowLayoutManger中mSlectPositon计算存在bug private void onSelectedCallBack() { mSelectPosition = Math.round (mOffsetAll / getIntervalDistance()); mSelectPosition = Math.abs(mSelectPosition % getItemCount()); if (mSelectedListener != null && mSelectPosition != mLastSelectPosition) { mSelectedListener.onItemSelected(mSelectPosition); } mLastSelectPosition = mSelectPosition; }
当mSelectPositon为负数时,会出现位置对不上,比如我有5个条目,当mSelectPosition为-6,Math.abs(mSelectPosition % getItemCount())计算结果为1,但事实对应的条目应该是4,当mSelectPosition为负数时正确的位置计算应该为应为 mSelectPosition = 条目个数和(list.size())+mSelectPosition % getItemCount()