/** * 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); } }
//@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)); } }
//@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)); }
//@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); } }