Example #1
0
 /**
  * Sends a cancel event to given {@link com.nhaarman.listviewanimations.itemmanipulation.TouchEventHandler}.
  *
  * @param touchEventHandler the {@code TouchEventHandler} to send the event to.
  * @param motionEvent       the {@link MotionEvent} to base the cancel event on.
  */
 private void sendCancelEvent(ITouchEventHandler touchEventHandler, MotionEvent motionEvent)
 {
     if (touchEventHandler != null)
     {
         MotionEvent cancelEvent = MotionEvent.Obtain(motionEvent);
         cancelEvent.Action = MotionEventActions.Cancel;
         touchEventHandler.onTouchEvent(cancelEvent);
     }
 }
Example #2
0
        //@Override
        public override bool DispatchTouchEvent(MotionEvent ev)
        {
            if (mCurrentHandlingTouchEventHandler == null)
            {
                /* None of the TouchEventHandlers are actively consuming events yet. */
                bool firstTimeInteracting = false;

                /* We don't support dragging items when there are items in the undo state. */
                if (!(mSwipeTouchListener is SwipeUndoTouchListener) || !((SwipeUndoTouchListener)mSwipeTouchListener).hasPendingItems())
                {
                    /* Offer the event to the DragAndDropHandler */
                    if (mDragAndDropHandler != null)
                    {
                        mDragAndDropHandler.onTouchEvent(ev);
                        firstTimeInteracting = mDragAndDropHandler.isInteracting();
                        if (firstTimeInteracting)
                        {
                            mCurrentHandlingTouchEventHandler = mDragAndDropHandler;
                            sendCancelEvent(mSwipeTouchListener, ev);
                        }
                    }
                }

                /* If not handled, offer the event to the SwipeDismissTouchListener */
                if (mCurrentHandlingTouchEventHandler == null && mSwipeTouchListener != null)
                {
                    mSwipeTouchListener.onTouchEvent(ev);
                    firstTimeInteracting = mSwipeTouchListener.isInteracting();
                    if (firstTimeInteracting)
                    {
                        mCurrentHandlingTouchEventHandler = mSwipeTouchListener;
                        sendCancelEvent(mDragAndDropHandler, ev);
                    }
                }

                if (firstTimeInteracting)
                {
                    /* One of the TouchEventHandlers is now taking over control.
                     * Cancel touch event handling on this DynamicListView */
                    MotionEvent cancelEvent = MotionEvent.Obtain(ev);
                    cancelEvent.Action = MotionEventActions.Cancel;
                    base.OnTouchEvent(cancelEvent);
                }

                return(firstTimeInteracting || base.DispatchTouchEvent(ev));
            }
            else
            {
                return(OnTouchEvent(ev));
            }
        }
Example #3
0
        //@TargetApi(Build.VERSION_CODES.FROYO)
        //@SuppressLint("NewApi")
        //@Override
        public override bool OnTouchEvent(MotionEvent ev)
        {
            if (mCurrentHandlingTouchEventHandler != null)
            {
                mCurrentHandlingTouchEventHandler.onTouchEvent(ev);
            }

            if (ev.ActionMasked == MotionEventActions.Up || ev.ActionMasked == MotionEventActions.Cancel)
            {
                /* Gesture is finished, reset the active TouchEventHandler */
                mCurrentHandlingTouchEventHandler = null;
            }

            return(mCurrentHandlingTouchEventHandler != null || base.OnTouchEvent(ev));
        }
 /**
  * Sends a cancel event to given {@link com.nhaarman.listviewanimations.itemmanipulation.TouchEventHandler}.
  *
  * @param touchEventHandler the {@code TouchEventHandler} to send the event to.
  * @param motionEvent       the {@link MotionEvent} to base the cancel event on.
  */
 private void sendCancelEvent(ITouchEventHandler touchEventHandler, MotionEvent motionEvent)
 {
     if (touchEventHandler != null)
     {
         MotionEvent cancelEvent = MotionEvent.Obtain(motionEvent);
         cancelEvent.Action = MotionEventActions.Cancel;
         touchEventHandler.onTouchEvent(cancelEvent);
     }
 }
        //@TargetApi(Build.VERSION_CODES.FROYO)
        //@SuppressLint("NewApi")
        //@Override
        public override bool OnTouchEvent(MotionEvent ev)
        {
            if (mCurrentHandlingTouchEventHandler != null)
            {
                mCurrentHandlingTouchEventHandler.onTouchEvent(ev);
            }

            if (ev.ActionMasked == MotionEventActions.Up || ev.ActionMasked == MotionEventActions.Cancel)
            {
                /* Gesture is finished, reset the active TouchEventHandler */
                mCurrentHandlingTouchEventHandler = null;
            }

            return mCurrentHandlingTouchEventHandler != null || base.OnTouchEvent(ev);
        }
        //@Override
        public override bool DispatchTouchEvent(MotionEvent ev)
        {

            if (mCurrentHandlingTouchEventHandler == null)
            {
                /* None of the TouchEventHandlers are actively consuming events yet. */
                bool firstTimeInteracting = false;

                /* We don't support dragging items when there are items in the undo state. */
                if (!(mSwipeTouchListener is SwipeUndoTouchListener) || !((SwipeUndoTouchListener)mSwipeTouchListener).hasPendingItems())
                {
                    /* Offer the event to the DragAndDropHandler */
                    if (mDragAndDropHandler != null)
                    {
                        mDragAndDropHandler.onTouchEvent(ev);
                        firstTimeInteracting = mDragAndDropHandler.isInteracting();
                        if (firstTimeInteracting)
                        {
                            mCurrentHandlingTouchEventHandler = mDragAndDropHandler;
                            sendCancelEvent(mSwipeTouchListener, ev);
                        }
                    }
                }

                /* If not handled, offer the event to the SwipeDismissTouchListener */
                if (mCurrentHandlingTouchEventHandler == null && mSwipeTouchListener != null)
                {
                    mSwipeTouchListener.onTouchEvent(ev);
                    firstTimeInteracting = mSwipeTouchListener.isInteracting();
                    if (firstTimeInteracting)
                    {
                        mCurrentHandlingTouchEventHandler = mSwipeTouchListener;
                        sendCancelEvent(mDragAndDropHandler, ev);
                    }
                }

                if (firstTimeInteracting)
                {
                    /* One of the TouchEventHandlers is now taking over control.
                       Cancel touch event handling on this DynamicListView */
                    MotionEvent cancelEvent = MotionEvent.Obtain(ev);
                    cancelEvent.Action = MotionEventActions.Cancel;
                    base.OnTouchEvent(cancelEvent);
                }

                return firstTimeInteracting || base.DispatchTouchEvent(ev);
            }
            else
            {
                return OnTouchEvent(ev);
            }
        }