private void initialize(Context context, AttributeSet attrs) { this.shuffleSettings = new ShuffleSettings(); this.shuffleSettings.handleAttributes(context, attrs); setViewAnimator(new ShuffleViewAnimator()); }
void checkScrollFinished() { int itemCount = shuffleAdapter != null ? shuffleAdapter.getItemCount() : 0; if (itemCount != 0 && adapterPosition >= itemCount) { dispatchScrollFinishedToListeners(); } }
@Override public void onDrag(DraggableView draggableView, float percentX, float percentY) { viewAnimator.updateViewsPositions(percentX, percentY); dispatchViewScrolledToListeners(draggableView, percentX, percentY); }
void updateDraggableView(CardDraggableView draggableView) { draggableView.setVertical(shuffleSettings.isVertical()); draggableView.setRotationEnabled(shuffleSettings.isRotationEnabled()); draggableView.setRotationValue(shuffleSettings.getRotation()); draggableView.setInlineMove(shuffleSettings.isInlineMove()); draggableView.setMinVelocity(shuffleSettings.getMinVelocity()); draggableView.setOverlayColors(shuffleSettings.getColorLeft(), shuffleSettings.getColorRight()); draggableView.setOverlayLayouts(shuffleSettings.getLayoutLeftResId(), shuffleSettings.getLayoutRightResId()); draggableView.setViewAnimator(viewAnimator); }
protected void onViewInflated() { int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); for (int i = numberOfCards - 1; i >= 0; i--) { CardDraggableView draggableView = generateDraggableView(); draggableView.setDraggable(false); updateDraggableView(draggableView); draggableViews.addFirst(draggableView); addView(draggableView); } notifyDataSetChanged(); }
void moveLastCardToTop() { //replace views CardDraggableView lastCard = draggableViews.removeLast(); draggableViews.addFirst(lastCard); //reorganize views Z order removeAllViews(); int numberOfCards = shuffleSettings.getNumberOfDisplayedCards(); for (int i = numberOfCards - 1; i >= 0; i--) { addView(draggableViews.get(i)); } checkScrollFinished(); }
void notifyDataSetChanged() { updateAdapter(); setFirstCardDraggable(); }
@Override public boolean animateExit(@NonNull CardDraggableView draggableView, Direction direction, int duration) { resetCard(shuffle.getDraggableView(1), duration); return super.animateExit(draggableView, direction, duration); }
void checkScrollStarted() { int itemCount = shuffleAdapter != null ? shuffleAdapter.getItemCount() : 0; if (itemCount != 0 && adapterPosition == 0) { dispatchScrollStartedToListeners(); } }
@Override public void animationStarted() { adapterPosition--; updateAdapter(); dispatchAdapterPositionToListeners(); }
public void swipeRight(int duration) { if (viewAnimator != null && currentDraggableView != null) { viewAnimator.animateExit(currentDraggableView, Direction.RIGHT, duration); } }
public void setViewAnimator(ShuffleViewAnimator viewAnimator) { viewAnimator.setShuffle(this); this.viewAnimator = viewAnimator; updateDraggableViews(); }
@Override public void onAnimationEnd(View view) { draggableView.setOverlayLeftAlpha(0f); draggableView.setOverlayRightAlpha(0f); } })
void dispatchAdapterPositionToListeners() { for (Listener listener : listeners) { listener.onViewChanged(adapterPosition); } }
void dispatchScrollStartedToListeners() { for (Listener listener : listeners) { listener.onScrollStarted(); } }
void dispatchScrollFinishedToListeners() { for (Listener listener : listeners) { listener.onScrollFinished(); } }
void dispatchExitedToListeners(DraggableView draggableView, Direction direction) { for (Listener listener : listeners) { listener.onViewExited(draggableView, direction); } }
void dispatchViewScrolledToListeners(DraggableView draggableView, float percentX, float percentY) { for (Listener listener : listeners) { listener.onViewScrolled(draggableView, percentX, percentY); } }
public Shuffle(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initialize(context, attrs); }
public void swipeLeft(int duration) { if (viewAnimator != null && currentDraggableView != null) { viewAnimator.animateExit(currentDraggableView, Direction.LEFT, duration); } }