/** * Dismiss the current card. * * @param exitRight True to scroll page to the right */ public void dismissCard(boolean exitRight) { if (onCardChangeListener != null) { onCardChangeListener.onCardDismissed(currentItem, exitRight); } populatePending = false; reversePos = exitRight; setCurrentItemInternal(currentItem + 1, true, false); }
/** * Figure out what the target page would be given current scroll and velocity. * * @return target page */ private int determineTargetPage(int currentPage, float pageOffset, int velocity, int deltaX) { int targetPage; if (Math.abs(deltaX) > flingDistance && Math.abs(velocity) > minimumVelocity) { if (virtualPos < 0) { targetPage = velocity > 0 ? currentPage : currentPage + 1; } else { targetPage = velocity > 0 ? currentPage + 1 : currentPage; } } else { final float truncator = currentPage >= currentItem ? 0.4f : 0.6f; targetPage = (int) (currentPage + pageOffset + truncator); } if (items.size() > 0) { final ItemInfo firstItem = items.get(0); final ItemInfo lastItem = items.get(items.size() - 1); // Only let the user target pages we have items for targetPage = Math.max(firstItem.position, Math.min(targetPage, lastItem.position)); } if (targetPage > currentPage && onCardChangeListener != null) { onCardChangeListener.onCardDismissed(currentPage, virtualPos > 0); } return targetPage; }