Example usage for android.support.v4.view ViewCompat setOverScrollMode

List of usage examples for android.support.v4.view ViewCompat setOverScrollMode

Introduction

In this page you can find the example usage for android.support.v4.view ViewCompat setOverScrollMode.

Prototype

public static void setOverScrollMode(View v, int overScrollMode) 

Source Link

Document

Set the over-scroll mode for this view.

Usage

From source file:vc908.stickerfactory.ui.advancedrecyclerview.draggable.RecyclerViewDragDropManager.java

private void finishDragging(boolean result) {
    final RecyclerView.ViewHolder draggedItem = mDraggingItem;

    if (draggedItem == null) {
        result = false;/*from   w ww.  j  av  a  2s.c o  m*/
    }

    // cancel deferred request
    if (mDeferredCancelProcess != null) {
        mRecyclerView.removeCallbacks(mDeferredCancelProcess);
        mDeferredCancelProcess = null;
    }

    // NOTE: setOverScrollMode() have to be called before calling removeItemDecoration()
    if (mRecyclerView != null && mDraggingItem != null) {
        ViewCompat.setOverScrollMode(mRecyclerView, mOrigOverScrollMode);
    }

    if (mDraggingItemDecorator != null) {
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationDuration(mItemSettleBackIntoPlaceAnimationDuration);
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationInterpolator(mItemSettleBackIntoPlaceAnimationInterpolator);
        mDraggingItemDecorator.finish(true);
    }

    if (mSwapTargetItemOperator != null) {
        mSwapTargetItemOperator
                .setReturnToDefaultPositionAnimationDuration(mItemSettleBackIntoPlaceAnimationDuration);
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationInterpolator(mItemSettleBackIntoPlaceAnimationInterpolator);
        mSwapTargetItemOperator.finish(true);
    }

    if (mEdgeEffectDecorator != null) {
        mEdgeEffectDecorator.releaseBothGlows();
    }

    stopScrollOnDraggingProcess();

    if (mRecyclerView != null && mRecyclerView.getParent() != null) {
        mRecyclerView.getParent().requestDisallowInterceptTouchEvent(false);
    }

    mDraggableRange = null;
    mDraggingItemDecorator = null;
    mSwapTargetItemOperator = null;
    mDraggingItem = null;
    mDraggingItemId = RecyclerView.NO_ID;

    mLastTouchY = 0;
    mDragStartTouchY = 0;
    mDragMinTouchY = 0;
    mDragMaxTouchY = 0;
    mGrabbedPositionY = 0;
    mGrabbedItemHeight = 0;

    // raise onDragItemFinished() event
    if (mAdapter != null) {
        mAdapter.onDragItemFinished(draggedItem, result);
    }

    //        if (draggedItem != null) {
    //            draggedItem.setIsRecyclable(true);
    //        }
}

From source file:com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager.java

@SuppressWarnings("unchecked")
private void startDragging(RecyclerView rv, MotionEvent e, RecyclerView.ViewHolder holder,
        ItemDraggableRange range) {/*ww w .  j  a v a  2 s.  c o  m*/
    safeEndAnimation(rv, holder);

    mHandler.cancelLongPressDetection();

    mDraggingItemInfo = new DraggingItemInfo(holder, mLastTouchX, mLastTouchY);
    mDraggingItemViewHolder = holder;

    // XXX if setIsRecyclable() is used, another view holder objects will be created
    // which has the same ID with currently dragging item... Not works as expected.

    // holder.setIsRecyclable(false);

    mDraggableRange = range;

    mOrigOverScrollMode = ViewCompat.getOverScrollMode(rv);
    ViewCompat.setOverScrollMode(rv, ViewCompat.OVER_SCROLL_NEVER);

    mLastTouchX = (int) (e.getX() + 0.5f);
    mLastTouchY = (int) (e.getY() + 0.5f);

    // disable auto scrolling until user moves the item
    mDragStartTouchY = mDragMinTouchY = mDragMaxTouchY = mLastTouchY;
    mDragStartTouchX = mDragMinTouchX = mDragMaxTouchX = mLastTouchX;
    mScrollDirMask = SCROLL_DIR_NONE;

    mRecyclerView.getParent().requestDisallowInterceptTouchEvent(true);

    startScrollOnDraggingProcess();

    // raise onDragItemStarted() event
    mAdapter.onDragItemStarted(mDraggingItemInfo, holder, mDraggableRange);

    // setup decorators
    mAdapter.onBindViewHolder(holder, holder.getLayoutPosition());

    mDraggingItemDecorator = new DraggingItemDecorator(mRecyclerView, holder, mDraggableRange);
    mDraggingItemDecorator.setShadowDrawable(mShadowDrawable);
    mDraggingItemDecorator.start(e, mDraggingItemInfo);

    int layoutType = CustomRecyclerViewUtils.getLayoutType(mRecyclerView);

    if (supportsViewTranslation() && (layoutType == CustomRecyclerViewUtils.LAYOUT_TYPE_LINEAR_VERTICAL
            || layoutType == CustomRecyclerViewUtils.LAYOUT_TYPE_LINEAR_HORIZONTAL)) {
        mSwapTargetItemOperator = new SwapTargetItemOperator(mRecyclerView, holder, mDraggableRange,
                mDraggingItemInfo);
        mSwapTargetItemOperator.setSwapTargetTranslationInterpolator(mSwapTargetTranslationInterpolator);
        mSwapTargetItemOperator.start();
        mSwapTargetItemOperator.update(mDraggingItemDecorator.getDraggingItemTranslationX(),
                mDraggingItemDecorator.getDraggingItemTranslationY());
    }

    if (mEdgeEffectDecorator != null) {
        mEdgeEffectDecorator.reorderToTop();
    }

    if (mItemDragEventListener != null) {
        mItemDragEventListener.onItemDragStarted(mAdapter.getDraggingItemInitialPosition());
    }
}

From source file:com.github.shareme.gwsmaterialuikit.library.advancerv.draggable.RecyclerViewDragDropManager.java

@SuppressWarnings("unchecked")
private void startDragging(RecyclerView rv, MotionEvent e, RecyclerView.ViewHolder holder,
        ItemDraggableRange range) {//w  w w.  j  av  a  2  s.co m
    safeEndAnimation(rv, holder);

    mHandler.cancelLongPressDetection();

    mDraggingItemInfo = new DraggingItemInfo(rv, holder, mLastTouchX, mLastTouchY);
    mDraggingItemViewHolder = holder;

    // XXX if setIsRecyclable() is used, another view holder objects will be created
    // which has the same ID with currently dragging item... Not works as expected.

    // holder.setIsRecyclable(false);

    mDraggableRange = range;

    mOrigOverScrollMode = ViewCompat.getOverScrollMode(rv);
    ViewCompat.setOverScrollMode(rv, ViewCompat.OVER_SCROLL_NEVER);

    mLastTouchX = (int) (e.getX() + 0.5f);
    mLastTouchY = (int) (e.getY() + 0.5f);

    // disable auto scrolling until user moves the item
    mDragStartTouchY = mDragMinTouchY = mDragMaxTouchY = mLastTouchY;
    mDragStartTouchX = mDragMinTouchX = mDragMaxTouchX = mLastTouchX;
    mScrollDirMask = SCROLL_DIR_NONE;

    mRecyclerView.getParent().requestDisallowInterceptTouchEvent(true);

    startScrollOnDraggingProcess();

    // raise onDragItemStarted() event
    mAdapter.onDragItemStarted(mDraggingItemInfo, holder, mDraggableRange);

    // setup decorators
    mAdapter.onBindViewHolder(holder, holder.getLayoutPosition());

    mDraggingItemDecorator = new DraggingItemDecorator(mRecyclerView, holder, mDraggableRange);
    mDraggingItemDecorator.setShadowDrawable(mShadowDrawable);
    mDraggingItemDecorator.start(e, mDraggingItemInfo);

    final int layoutType = CustomRecyclerViewUtils.getLayoutType(mRecyclerView);

    if (supportsViewTranslation() && !mCheckCanDrop
            && (layoutType == CustomRecyclerViewUtils.LAYOUT_TYPE_LINEAR_VERTICAL
                    || layoutType == CustomRecyclerViewUtils.LAYOUT_TYPE_LINEAR_HORIZONTAL)) {
        mSwapTargetItemOperator = new SwapTargetItemOperator(mRecyclerView, holder, mDraggableRange,
                mDraggingItemInfo);
        mSwapTargetItemOperator.setSwapTargetTranslationInterpolator(mSwapTargetTranslationInterpolator);
        mSwapTargetItemOperator.start();
        mSwapTargetItemOperator.update(mDraggingItemDecorator.getDraggingItemTranslationX(),
                mDraggingItemDecorator.getDraggingItemTranslationY());
    }

    if (mEdgeEffectDecorator != null) {
        mEdgeEffectDecorator.reorderToTop();
    }

    if (mItemDragEventListener != null) {
        mItemDragEventListener.onItemDragStarted(mAdapter.getDraggingItemInitialPosition());
        mItemDragEventListener.onItemDragMoveDistanceUpdated(0, 0);
    }
}

From source file:com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropManager.java

private void finishDragging(boolean result) {
    // RecyclerView.ViewHolder draggedItem = mDraggingItemViewHolder;

    if (!isDragging()) {
        return;/*from  w  ww  . j av a  2 s .c om*/
    }

    // cancel deferred request
    mHandler.removeDeferredCancelDragRequest();

    // NOTE: setOverScrollMode() have to be called before calling removeItemDecoration()
    if (mRecyclerView != null && mDraggingItemViewHolder != null) {
        ViewCompat.setOverScrollMode(mRecyclerView, mOrigOverScrollMode);
    }

    if (mDraggingItemDecorator != null) {
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationDuration(mItemSettleBackIntoPlaceAnimationDuration);
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationInterpolator(mItemSettleBackIntoPlaceAnimationInterpolator);
        mDraggingItemDecorator.finish(true);
    }

    if (mSwapTargetItemOperator != null) {
        mSwapTargetItemOperator
                .setReturnToDefaultPositionAnimationDuration(mItemSettleBackIntoPlaceAnimationDuration);
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationInterpolator(mItemSettleBackIntoPlaceAnimationInterpolator);
        mSwapTargetItemOperator.finish(true);
    }

    if (mEdgeEffectDecorator != null) {
        mEdgeEffectDecorator.releaseBothGlows();
    }

    stopScrollOnDraggingProcess();

    if (mRecyclerView != null && mRecyclerView.getParent() != null) {
        mRecyclerView.getParent().requestDisallowInterceptTouchEvent(false);
    }

    if (mRecyclerView != null) {
        mRecyclerView.invalidate();
    }

    mDraggableRange = null;
    mDraggingItemDecorator = null;
    mSwapTargetItemOperator = null;
    mDraggingItemViewHolder = null;
    mDraggingItemInfo = null;

    mLastTouchX = 0;
    mLastTouchY = 0;
    mDragStartTouchX = 0;
    mDragStartTouchY = 0;
    mDragMinTouchX = 0;
    mDragMinTouchY = 0;
    mDragMaxTouchX = 0;
    mDragMaxTouchY = 0;
    mCanDragH = false;
    mCanDragV = false;

    int draggingItemInitialPosition = RecyclerView.NO_POSITION;
    int draggingItemCurrentPosition = RecyclerView.NO_POSITION;

    // raise onDragItemFinished() event
    if (mAdapter != null) {
        draggingItemInitialPosition = mAdapter.getDraggingItemInitialPosition();
        draggingItemCurrentPosition = mAdapter.getDraggingItemCurrentPosition();
        mAdapter.onDragItemFinished(result);
    }

    //        if (draggedItem != null) {
    //            draggedItem.setIsRecyclable(true);
    //        }

    if (mItemDragEventListener != null) {
        mItemDragEventListener.onItemDragFinished(draggingItemInitialPosition, draggingItemCurrentPosition,
                result);
    }
}

From source file:com.github.shareme.gwsmaterialuikit.library.advancerv.draggable.RecyclerViewDragDropManager.java

private void finishDragging(boolean result) {
    // RecyclerView.ViewHolder draggedItem = mDraggingItemViewHolder;

    if (!isDragging()) {
        return;//from w w w.  j a va  2s  . c  om
    }

    // cancel deferred request
    if (mHandler != null) {
        mHandler.removeDeferredCancelDragRequest();
    }

    // NOTE: setOverScrollMode() have to be called before calling removeItemDecoration()
    if (mRecyclerView != null && mDraggingItemViewHolder != null) {
        ViewCompat.setOverScrollMode(mRecyclerView, mOrigOverScrollMode);
    }

    if (mDraggingItemDecorator != null) {
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationDuration(mItemSettleBackIntoPlaceAnimationDuration);
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationInterpolator(mItemSettleBackIntoPlaceAnimationInterpolator);
        mDraggingItemDecorator.finish(true);
    }

    if (mSwapTargetItemOperator != null) {
        mSwapTargetItemOperator
                .setReturnToDefaultPositionAnimationDuration(mItemSettleBackIntoPlaceAnimationDuration);
        mDraggingItemDecorator
                .setReturnToDefaultPositionAnimationInterpolator(mItemSettleBackIntoPlaceAnimationInterpolator);
        mSwapTargetItemOperator.finish(true);
    }

    if (mEdgeEffectDecorator != null) {
        mEdgeEffectDecorator.releaseBothGlows();
    }

    stopScrollOnDraggingProcess();

    if (mRecyclerView != null && mRecyclerView.getParent() != null) {
        mRecyclerView.getParent().requestDisallowInterceptTouchEvent(false);
    }

    if (mRecyclerView != null) {
        mRecyclerView.invalidate();
    }

    mDraggableRange = null;
    mDraggingItemDecorator = null;
    mSwapTargetItemOperator = null;
    mDraggingItemViewHolder = null;
    mDraggingItemInfo = null;

    mLastTouchX = 0;
    mLastTouchY = 0;
    mDragStartTouchX = 0;
    mDragStartTouchY = 0;
    mDragMinTouchX = 0;
    mDragMinTouchY = 0;
    mDragMaxTouchX = 0;
    mDragMaxTouchY = 0;
    mDragScrollDistanceX = 0;
    mDragScrollDistanceY = 0;
    mCanDragH = false;
    mCanDragV = false;

    int draggingItemInitialPosition = RecyclerView.NO_POSITION;
    int draggingItemCurrentPosition = RecyclerView.NO_POSITION;

    // raise onDragItemFinished() event
    if (mAdapter != null) {
        draggingItemInitialPosition = mAdapter.getDraggingItemInitialPosition();
        draggingItemCurrentPosition = mAdapter.getDraggingItemCurrentPosition();
        mAdapter.onDragItemFinished(result);
    }

    //        if (draggedItem != null) {
    //            draggedItem.setIsRecyclable(true);
    //        }

    if (mItemDragEventListener != null) {
        mItemDragEventListener.onItemDragFinished(draggingItemInitialPosition, draggingItemCurrentPosition,
                result);
    }
}