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

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

源代码1 项目: AndroidProject   文件: BaseAdapter.java
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {

    if (mScrollingListener == null) {
        return;
    }

    if (newState == RecyclerView.SCROLL_STATE_IDLE) {

        if (!recyclerView.canScrollVertically(1)) {
            //是否能向下滚动,false 表示已经滚动到底部
            mScrollingListener.onScrollDown(recyclerView);
        } else if (!recyclerView.canScrollVertically(-1)) {
            //是否能向上滚动,false 表示已经滚动到顶部
            mScrollingListener.onScrollTop(recyclerView);
        }

    } else if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {
        //正在滚动中
        mScrollingListener.onScrolling(recyclerView);
    }
}
 
源代码2 项目: HgLauncher   文件: SimpleScrollListener.java
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    onScroll();

    if (!recyclerView.canScrollVertically(RecyclerView.FOCUS_DOWN)) {
        onEnd();
        resetScrollDistance();
    } else {
        if (mScrolledDistance < -HIDE_THRESHOLD) {
            onScrollUp();
            resetScrollDistance();
        }
    }

    if ((dy < 0)) {
        mScrolledDistance += dy;
    }
}
 
源代码3 项目: HgLauncher   文件: SimpleScrollListener.java
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    onScroll();

    if (!recyclerView.canScrollVertically(RecyclerView.FOCUS_DOWN)) {
        onEnd();
        resetScrollDistance();
    } else {
        if (mScrolledDistance < -HIDE_THRESHOLD) {
            onScrollUp();
            resetScrollDistance();
        }
    }

    if ((dy < 0)) {
        mScrolledDistance += dy;
    }
}
 
源代码4 项目: Mysplash   文件: PagerLoadablePresenter.java
public static List<Photo> loadMore(PagerViewModel<Photo> viewModel, int currentCount,
                                   PagerView pagerView, RecyclerView recyclerView,
                                   PagerManageView pagerManageView, int pagerIndex) {
    if (pagerManageView != null && pagerManageView.canLoadMore(pagerIndex)) {
        pagerManageView.onLoad(pagerIndex);
    }
    if (!recyclerView.canScrollVertically(1)
            && pagerManageView != null && pagerManageView.isLoading(pagerIndex)) {
        pagerView.setSwipeLoading(true);
    }

    if (currentCount >= viewModel.getListSize()) {
        return new ArrayList<>();
    }

    return subList(viewModel, currentCount, viewModel.getListSize());
}
 
源代码5 项目: UltimateRecyclerView   文件: DragSortAdapter.java
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
void handleDragScroll(RecyclerView rv, DragInfo dragInfo) {
    if (rv.getLayoutManager().canScrollHorizontally()) {
        if (rv.canScrollHorizontally(-1) && dragInfo.shouldScrollLeft()) {
            rv.scrollBy(-SCROLL_AMOUNT, 0);
            dragManager.clearNextMove();
        } else if (rv.canScrollHorizontally(1) && dragInfo.shouldScrollRight(rv.getWidth())) {
            rv.scrollBy(SCROLL_AMOUNT, 0);
            dragManager.clearNextMove();
        }
    } else if (rv.getLayoutManager().canScrollVertically()) {
        if (rv.canScrollVertically(-1) && dragInfo.shouldScrollUp()) {
            rv.scrollBy(0, -SCROLL_AMOUNT);
            dragManager.clearNextMove();
        } else if (rv.canScrollVertically(1) && dragInfo.shouldScrollDown(rv.getHeight())) {
            rv.scrollBy(0, SCROLL_AMOUNT);
            dragManager.clearNextMove();
        }
    }
}
 
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
  if (recyclerView.canScrollVertically(-1)) {
    if (toolbarShadow.getVisibility() != View.VISIBLE) {
      ViewUtil.fadeIn(toolbarShadow, 250);
    }
  } else {
    if (toolbarShadow.getVisibility() != View.GONE) {
      ViewUtil.fadeOut(toolbarShadow, 250);
    }
  }
}
 
源代码7 项目: MusicPlayer   文件: PlayingQueueController.java
@OnTouch(R.id.recycler_view)
boolean onTouchRecyclerView(RecyclerView view, MotionEvent event) {
    boolean isRecyclerViewOnTop = !view.canScrollVertically(-1);
    float currentY = event.getY();

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            Log.d(TAG, "onTouchRecyclerView: down");
        //    Toast.makeText(getContext(),"Down",Toast.LENGTH_SHORT).show();
            mFirstTouchEvent = true;
            view.onTouchEvent(event);
            if(isRecyclerViewOnTop) mLayerController.streamOnTouchEvent(mRoot,event);
            break;
        case MotionEvent.ACTION_UP:
            Log.d(TAG, "onTouchRecyclerView: up");
            mFirstTouchEvent = false;
            mPreviousY = 0;
            if(mInStreamEvent) {
                mInStreamEvent = false;
                mLayerController.streamOnTouchEvent(mRoot, event);
            }
             view.onTouchEvent(event);
            break;
        default:
            Log.d(TAG, "onTouchRecyclerView: "+event.getAction());
            if(mPreviousY<currentY&&isRecyclerViewOnTop) mInStreamEvent = true;
            if(mInStreamEvent) mLayerController.streamOnTouchEvent(mRoot,event);
            else view.onTouchEvent(event);
            mFirstTouchEvent = false;
    }
    mPreviousY = currentY;
    return true;
}
 
源代码8 项目: HgLauncher   文件: ViewUtils.java
/**
 * Launches an app based on RecyclerView scroll state.
 *
 * @param activity     The activity for context reference.
 * @param recyclerView The RecyclerView itself.
 * @param adapter      A FlexibleAdapter with App items.
 */
public static void keyboardLaunchApp(Activity activity, RecyclerView recyclerView, FlexibleAdapter<App> adapter) {
    if (recyclerView.canScrollVertically(RecyclerView.FOCUS_UP)) {
        AppUtils.launchApp(activity, Utils.requireNonNull(
                adapter.getItem(0)));
    } else if (!recyclerView.canScrollVertically(RecyclerView.FOCUS_DOWN)) {
        AppUtils.launchApp(activity, Utils.requireNonNull(
                adapter.getItem(adapter.getItemCount() - 1)));
    }
}
 
源代码9 项目: HgLauncher   文件: ViewUtils.java
/**
 * Launches an app based on RecyclerView scroll state.
 *
 * @param activity     The activity for context reference.
 * @param recyclerView The RecyclerView itself.
 * @param adapter      A FlexibleAdapter with App items.
 */
public static void keyboardLaunchApp(Activity activity, RecyclerView recyclerView, FlexibleAdapter<App> adapter) {
    if (recyclerView.canScrollVertically(RecyclerView.FOCUS_UP)) {
        AppUtils.launchApp(activity, Utils.requireNonNull(
                adapter.getItem(0)));
    } else if (!recyclerView.canScrollVertically(RecyclerView.FOCUS_DOWN)) {
        AppUtils.launchApp(activity, Utils.requireNonNull(
                adapter.getItem(adapter.getItemCount() - 1)));
    }
}
 
源代码10 项目: Mysplash   文件: PagerScrollablePresenter.java
public static void onScrolled(BothWaySwipeRefreshLayout refreshLayout,
                              RecyclerView recyclerView, int realItemCount,
                              @Nullable PagerManageView pagerManageView, int index, int dy) {
    if (recyclerView.getLayoutManager() == null) {
        return;
    }
    int[] lastVisibleItems = null;
    if (recyclerView.getLayoutManager() instanceof StaggeredGridLayoutManager) {
        lastVisibleItems = ((StaggeredGridLayoutManager) recyclerView.getLayoutManager())
                .findLastVisibleItemPositions(null);
    } else if (recyclerView.getLayoutManager() instanceof GridLayoutManager) {
        lastVisibleItems = new int[] {((GridLayoutManager) recyclerView.getLayoutManager())
                .findLastVisibleItemPosition()};
    } else if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
        lastVisibleItems = new int[] {((LinearLayoutManager) recyclerView.getLayoutManager())
                .findLastVisibleItemPosition()};
    }
    if (lastVisibleItems == null || lastVisibleItems.length == 0) {
        return;
    }

    if (pagerManageView != null && pagerManageView.canLoadMore(index)
            && lastVisibleItems[lastVisibleItems.length - 1] >= realItemCount - ListPager.DEFAULT_PER_PAGE
            && realItemCount > 0
            && dy > 0) {
        pagerManageView.onLoad(index);
    }
    if (!recyclerView.canScrollVertically(1)
            && pagerManageView != null && pagerManageView.isLoading(index)) {
        refreshLayout.setLoading(true);
    }
}
 
源代码11 项目: AndroidMaterialDialog   文件: DialogRootView.java
/**
 * Returns, whether a specific recylcer view is scrolled to the bottom, or not.
 *
 * @param recyclerView The recycler view as an instance of the class {@link RecyclerView}. The
 *                     recycler view may not be null
 * @return True, if the given recycler view is scrolled to the bottom, false otherwise
 */
private boolean isRecyclerViewScrolledToBottom(@NonNull final RecyclerView recyclerView) {
    return !recyclerView.canScrollVertically(1);
}
 
源代码12 项目: AndroidMaterialDialog   文件: DialogRootView.java
/**
 * Returns, whether a specific recylcer view is scrolled to the top, or not.
 *
 * @param recyclerView The recycler view as an instance of the class {@link RecyclerView}. The
 *                     recycler view may not be null
 * @return True, if the given recycler view is scrolled to the top, false otherwise
 */
private boolean isRecyclerViewScrolledToTop(@NonNull final RecyclerView recyclerView) {
    return !recyclerView.canScrollVertically(-1);
}