recyclerview 平滑的滑动到指定位置
/**
* 平滑的滑动到指定位置
*/
private void smoothMoveToPosition(RecyclerView mRecyclerView, final int position) {
// 第一个可见位置
int firstItem = mRecyclerView.getChildLayoutPosition(mRecyclerView.getChildAt(0));
// 最后一个可见位置
int lastItem = mRecyclerView.getChildLayoutPosition(mRecyclerView.getChildAt(mRecyclerView.getChildCount() - 1));
if (position < firstItem) {
// 第一种可能:跳转位置在第一个可见位置之前
mRecyclerView.smoothScrollToPosition(position);
} else if (position <= lastItem) {
//滑动指定高度
mRecyclerView.smoothScrollBy(0, DisplayUtil.getScreenHeight(this) -
(Resources.getSystem().getDimensionPixelSize(Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android"))));
} else {
// 第三种可能:跳转位置在最后可见项之后
mRecyclerView.smoothScrollToPosition(position);
}
// 此方法能实现指定位置位于屏幕顶部,但是不具有平滑滚动视觉效果
// if (position != -1) {
// mRecyclerView.scrollToPosition(position);
// LinearLayoutManager mLayoutManager =
// (LinearLayoutManager) mRecyclerView.getLayoutManager();
// mLayoutManager.scrollToPositionWithOffset(position, 0);
// }
}