androidx.recyclerview.widget.RecyclerView#computeVerticalScrollRange ( )源码实例Demo

下面列出了androidx.recyclerview.widget.RecyclerView#computeVerticalScrollRange ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
    boolean callSuper = true;
    if (target instanceof RecyclerView) {
        RecyclerView recyclerView = (RecyclerView) target;
        int estimatedHeight = recyclerView.computeVerticalScrollRange();
        int totalSpace = child.getHeight() + target.getHeight();
        if (estimatedHeight <= totalSpace) {
            callSuper = false;
        }
    }
    if (callSuper) {
        super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed,
                dxUnconsumed, dyUnconsumed);
    }
}
 
源代码2 项目: NewFastFrame   文件: OnLoadMoreScrollListener.java
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    int result = 1;
    if (recyclerView instanceof SuperRecyclerView) {
        SuperRecyclerView superRecyclerView = (SuperRecyclerView) recyclerView;
        result += superRecyclerView.getHeaderContainer().getChildCount();
    }
    int visibleItemCount = layoutManager.getChildCount();
    boolean flag = recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() >= recyclerView.computeVerticalScrollRange();
    boolean triggerCondition = visibleItemCount > result
            && newState == RecyclerView.SCROLL_STATE_IDLE
            && canTriggerLoadMore(recyclerView) && flag;
    if (triggerCondition) {
        onLoadMore(recyclerView);
    }
}
 
源代码3 项目: litho   文件: ScrollController.java
@Override
public void onScrolled(RecyclerView rv, int dx, int dy) {
  final int scrollRange = rv.computeVerticalScrollRange();
  final int scrollExtent = rv.computeVerticalScrollExtent();

  scrollOffsetRange = scrollRange - scrollExtent;
  handleOffsetRange =
      scrollExtent - dpToPixel(rv.getContext(), 2 * HANDLE_VERTICAL_MARGIN + HANDLE_SIZE_DP);

  scrollOffset = rv.computeVerticalScrollOffset();

  if (userControlling) {
    return;
  }

  final float scale = ((float) scrollOffset) / scrollOffsetRange;
  handleOffset = (int) (handleOffsetRange * scale);
  handleOffsetDV.set((float) handleOffset);
}
 
源代码4 项目: RecyclerExt   文件: FastScroll.java
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
    int verticalRange = recyclerView.computeVerticalScrollRange();

    //Makes sure the FastScroll is correctly hidden on shorter lists
    if (hideOnShortLists && (verticalRange < calculatedMinDisplayHeight || calculatedMinDisplayHeight == 0)) {
        updateHandleVisibility(false);
        return;
    }

    //Makes sure the handle is shown when scrolling
    updateHandleVisibility(true);
    delayHandler.removeCallbacks(handleHideRunnable);

    if (handle.isSelected()) {
        return;
    }

    hideHandleDelayed();

    float ratio = (float)recyclerView.computeVerticalScrollOffset() / (float) (verticalRange - recyclerView.computeVerticalScrollExtent());
    float halfHandleHeight = (handle.getHeight() / 2);
    setBubbleAndHandlePosition((height - handle.getHeight()) * ratio + halfHandleHeight);
}
 
@Override
public void onScrolled(@NonNull final RecyclerView recyclerView, final int dx, final int dy) {
  if (handle.isSelected()) return;
  final int   offset      = recyclerView.computeVerticalScrollOffset();
  final int   range       = recyclerView.computeVerticalScrollRange();
  final int   extent      = recyclerView.computeVerticalScrollExtent();
  final int   offsetRange = Math.max(range - extent, 1);
  setBubbleAndHandlePosition((float) Util.clamp(offset, 0, offsetRange) / offsetRange);
}
 
源代码6 项目: a   文件: FastScroller.java
private float getScrollProportion(RecyclerView recyclerView) {
    if (recyclerView == null) {
        return 0;
    }
    final int verticalScrollOffset = recyclerView.computeVerticalScrollOffset();
    final int verticalScrollRange = recyclerView.computeVerticalScrollRange();
    final float rangeDiff = verticalScrollRange - mViewHeight;
    float proportion = (float) verticalScrollOffset / (rangeDiff > 0 ? rangeDiff : 1f);
    return mViewHeight * proportion;
}
 
源代码7 项目: call_manage   文件: FastScroller.java
public void updateContainerAndScrollBarPosition(RecyclerView recyclerView) {
    if (!scrollBar.isSelected()) {
        int verticalScrollOffset = recyclerView.computeVerticalScrollOffset();
        int verticalScrollRange = recyclerView.computeVerticalScrollRange();
        float proportion = (float) verticalScrollOffset / ((float) verticalScrollRange - getHeight());
        setContainerAndScrollBarPosition(getHeight() * proportion);
    }
}
 
源代码8 项目: MyBookshelf   文件: FastScroller.java
private float getScrollProportion(RecyclerView recyclerView) {
    if (recyclerView == null) {
        return 0;
    }
    final int verticalScrollOffset = recyclerView.computeVerticalScrollOffset();
    final int verticalScrollRange = recyclerView.computeVerticalScrollRange();
    final float rangeDiff = verticalScrollRange - mViewHeight;
    float proportion = (float) verticalScrollOffset / (rangeDiff > 0 ? rangeDiff : 1f);
    return mViewHeight * proportion;
}
 
源代码9 项目: PixImagePicker   文件: Pix.java
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);

    if (recyclerView.isEnabled()) {
        switch (newState) {
            case RecyclerView.SCROLL_STATE_DRAGGING:
                handler.removeCallbacks(mScrollbarHider);
                if (mScrollbar.getVisibility() != View.VISIBLE) {
                    Utility.cancelAnimation(mScrollbarAnimator);
                    if (!Utility.isViewVisible(mScrollbar) && (recyclerView.computeVerticalScrollRange()
                            - mViewHeight > 0)) {

                        mScrollbarAnimator = Utility.showScrollbar(mScrollbar, Pix.this);
                    }
                }
                break;
            case RecyclerView.SCROLL_STATE_IDLE:
                if (mHideScrollbar && !mHandleView.isSelected()) {
                    handler.postDelayed(mScrollbarHider, sScrollbarHideDelay);
                }
                break;
            default:
                break;
        }
    }
}
 
源代码10 项目: PixImagePicker   文件: Pix.java
private float getScrollProportion(RecyclerView recyclerView) {
    final int verticalScrollOffset = recyclerView.computeVerticalScrollOffset();
    final int verticalScrollRange = recyclerView.computeVerticalScrollRange();
    final float rangeDiff = verticalScrollRange - mViewHeight;
    float proportion = (float) verticalScrollOffset / (rangeDiff > 0 ? rangeDiff : 1f);
    return mViewHeight * proportion;
}
 
源代码11 项目: HaoReader   文件: FastScroller.java
private float getScrollProportion(RecyclerView recyclerView) {
    if (recyclerView == null) {
        return 0;
    }

    final int verticalScrollOffset = recyclerView.computeVerticalScrollOffset();
    final int verticalScrollRange = recyclerView.computeVerticalScrollRange();
    final float rangeDiff = verticalScrollRange - viewHeight;
    float proportion = (float) verticalScrollOffset / (rangeDiff > 0 ? rangeDiff : 1f);
    return viewHeight * proportion;
}
 
@Override
public void onScrolled(final RecyclerView recyclerView, final int dx, final int dy) {
  if (handle.isSelected()) return;
  final int   offset      = recyclerView.computeVerticalScrollOffset();
  final int   range       = recyclerView.computeVerticalScrollRange();
  final int   extent      = recyclerView.computeVerticalScrollExtent();
  final int   offsetRange = Math.max(range - extent, 1);
  setBubbleAndHandlePosition((float) Util.clamp(offset, 0, offsetRange) / offsetRange);
}
 
/**
 * 计算垂直滚动范围
 *
 * @return 滚动范围
 */
protected int computeVerticalScrollRange() {
    if (getOrientation() == RecyclerView.VERTICAL) {
        final RecyclerView view = getRecyclerView();
        return view == null ? 0 : view.computeVerticalScrollRange();
    }
    return getChildMaxHeight(mChildMaxHeight) + mTopDecorationMaxWidthOfChildMaxHeight +
            mBottomDecorationMaxWidthOfChildMaxHeight;
}
 
源代码14 项目: HaoReader   文件: InfiniteScrollListener.java
private static boolean isSlideToBottom(RecyclerView recyclerView) {
    return recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset()
            >= recyclerView.computeVerticalScrollRange();
}