private int adjustDxForRight(int dx) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollHorizontally()) { return 0; } final View firstChild = layoutManager.getChildAt(0); final int position = layoutManager.getPosition(firstChild); if (position == 0) { final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) firstChild.getLayoutParams(); final int maxDx = -(layoutManager.getDecoratedLeft(firstChild) - params.leftMargin) + layoutManager.getPaddingLeft(); if (dx > maxDx) { return maxDx; } } return dx; }
private int adjustDyForDown(int dy) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollVertically()) { return 0; } final View firstChild = layoutManager.getChildAt(0); final int position = layoutManager.getPosition(firstChild); if (position == 0) { final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) firstChild.getLayoutParams(); final int maxDy = -(layoutManager.getDecoratedTop(firstChild) - params.topMargin) + layoutManager.getPaddingTop(); if (dy > maxDy) { return maxDy; } } return dy; }
private int adjustDxForLeft(int dx) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollHorizontally()) { return 0; } final View lastChild = layoutManager.getChildAt(layoutManager.getChildCount() - 1); final int position = layoutManager.getPosition(lastChild); if (position == layoutManager.getItemCount() - 1) { final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) lastChild.getLayoutParams(); final int maxDx = layoutManager.getWidth() - layoutManager.getPaddingRight() - (layoutManager.getDecoratedRight(lastChild) + params.rightMargin); if (dx < maxDx) { return maxDx; } } return dx; }
private int adjustDyForUp(int dy) { final RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager == null || !layoutManager.canScrollVertically()) { return 0; } final View lastChild = layoutManager.getChildAt(layoutManager.getChildCount() - 1); final int position = layoutManager.getPosition(lastChild); if (position == layoutManager.getItemCount() - 1) { final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) lastChild.getLayoutParams(); final int maxDy = layoutManager.getHeight() - layoutManager.getPaddingBottom() - (layoutManager.getDecoratedBottom(lastChild) + params.bottomMargin); if (dy < maxDy) { return maxDy; } } return dy; }
private void computeSeekDistance() { RecyclerView.LayoutManager layoutManager = getLayoutManager(); if (layoutManager != null && layoutManager.getChildCount() > 0