Android RecyclerView 快速平滑返回頂部

先看下實現的效果,沒效果什麼都白扯spa

 

下面直接上方法:code

//目標項是否在最後一個可見項以後
  private boolean mShouldScroll;
  //記錄目標項位置
  private int mToPosition;
  //目標項是否在最後一個可見項以後 private boolean mShouldScroll; //記錄目標項位置 private int mToPosition;
  //滑動到指定位置
  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) {
          // 第二種可能:跳轉位置在第一個可見位置以後
          int movePosition = position - firstItem;
          if (movePosition >= 0 && movePosition < mRecyclerView.getChildCount()) {
              int top = mRecyclerView.getChildAt(movePosition).getTop();
              mRecyclerView.smoothScrollBy(0, top);
          }
      } else {
          // 第三種可能:跳轉位置在最後可見項以後
          mRecyclerView.smoothScrollToPosition(position);
          mToPosition = position;
          mShouldScroll = true;
      }
  }

使用方法blog

 smoothMoveToPosition(rcv_activity_qz_info_list, 0);

在使用方法的時候判斷下非空等操做,避免無用操做get

相關文章
相關標籤/搜索