Java Code Examples for android.view.View#dispatchTouchEvent()
The following examples show how to use
android.view.View#dispatchTouchEvent() .
These examples are extracted from open source projects.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: GestureViews File: GestureControllerForPager.java License: Apache License 2.0 | 7 votes |
@SuppressLint("ClickableViewAccessibility") // Not needed for ViewPager @Override public boolean onTouch(View view, @NonNull MotionEvent event) { // ViewPager will steal touch events during settling regardless of // requestDisallowInterceptTouchEvent. We will prevent it here. if (!isTouchInProgress && event.getActionMasked() == MotionEvent.ACTION_DOWN) { isTouchInProgress = true; // Now ViewPager is in drag mode, so it should not intercept DOWN event view.dispatchTouchEvent(event); isTouchInProgress = false; return true; } // User can touch outside of child view, so we will not have a chance to settle // ViewPager. If so, this listener should be called and we will be able to settle // ViewPager manually. settleViewPagerIfFinished((ViewPager) view, event); return true; // We should skip view pager touches to prevent some subtle bugs }
Example 2
Source Project: WayHoo File: TouchDispatchView.java License: Apache License 2.0 | 6 votes |
public boolean onTouchEvent(MotionEvent event) { if (!isInterceptTouches) return super.onTouchEvent(event); int count = getChildCount(); if (count < 0) return isInterceptTouches; for (int i = 0; i < count; ++i) { View childView = getChildAt(i); float oldX = event.getX(); float oldY = event.getY(); float x = event.getX() - childView.getLeft(); float y = event.getY() - childView.getTop(); if (((y >= 0.0F) && (x >= 0.0F)) || ((MotionEvent.ACTION_MASK & event.getAction()) != MotionEvent.ACTION_DOWN)){ //L.i("liweiping", "new touch --> x = " + x +", y = " + y); event.setLocation(x, y); }else{ //L.i("liweiping", "old touch --> oldX = " + oldX +", oldY = " + oldY); event.setLocation(oldX, oldY); } childView.dispatchTouchEvent(event); } return isInterceptTouches; }
Example 3
Source Project: PowerfulRecyclerView File: RecyclerViewUtils.java License: Apache License 2.0 | 6 votes |
private void checkHitArea(View recyclerViewHeader, MotionEvent motionEvent, int pointerIndex) { final float x = MotionEventCompat.getX(motionEvent, pointerIndex); final float y = MotionEventCompat.getY(motionEvent, pointerIndex); Rect rect = new Rect(); recyclerViewHeader.getHitRect(rect); if((rect.contains((int)x,(int)y))){ recyclerViewHeader.dispatchTouchEvent(motionEvent); shouldIntercept = true; return; } shouldIntercept = false; }
Example 4
Source Project: commcare-android File: FormEntryActivity.java License: Apache License 2.0 | 6 votes |
@SuppressLint("NewApi") @Override public boolean dispatchTouchEvent(MotionEvent mv) { //We need to ignore this even if it's processed by the action //bar (if one exists) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar bar = getActionBar(); if (bar != null) { View customView = bar.getCustomView(); if (customView != null && customView.dispatchTouchEvent(mv)) { return true; } } } boolean handled = mGestureDetector.onTouchEvent(mv); return handled || super.dispatchTouchEvent(mv); }
Example 5
Source Project: UltimateRecyclerView File: TouchInterceptionLayout.java License: Apache License 2.0 | 5 votes |
/** * Duplicate touch events to child views. * We want to dispatch a down motion event and the move events to * child views, but calling dispatchTouchEvent() causes StackOverflowError. * Therefore we do it manually. * * @param ev motion event to be passed to children * @param pendingEvents pending events like ACTION_DOWN. This will be passed to the children before ev */ private void duplicateTouchEventForChildren(MotionEvent ev, MotionEvent... pendingEvents) { if (ev == null) { return; } for (int i = getChildCount() - 1; 0 <= i; i--) { View childView = getChildAt(i); if (childView != null) { Rect childRect = new Rect(); childView.getHitRect(childRect); MotionEvent event = MotionEvent.obtainNoHistory(ev); if (!childRect.contains((int) event.getX(), (int) event.getY())) { continue; } float offsetX = -childView.getLeft(); float offsetY = -childView.getTop(); boolean consumed = false; if (pendingEvents != null) { for (MotionEvent pe : pendingEvents) { if (pe != null) { MotionEvent peAdjusted = MotionEvent.obtainNoHistory(pe); peAdjusted.offsetLocation(offsetX, offsetY); consumed |= childView.dispatchTouchEvent(peAdjusted); } } } event.offsetLocation(offsetX, offsetY); consumed |= childView.dispatchTouchEvent(event); if (consumed) { break; } } } }
Example 6
Source Project: Telegram File: PhotoAttachPhotoCell.java License: GNU General Public License v2.0 | 5 votes |
@Override public boolean performAccessibilityAction(int action, Bundle arguments) { if (action == R.id.acc_action_open_photo) { View parent = (View) getParent(); parent.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, getLeft(), getTop() + getHeight() - 1, 0)); parent.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, getLeft(), getTop() + getHeight() - 1, 0)); } return super.performAccessibilityAction(action, arguments); }
Example 7
Source Project: KUtils File: BGAGuideLinkageLayout.java License: Apache License 2.0 | 5 votes |
@Override public boolean dispatchTouchEvent(MotionEvent ev) { for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); try { child.dispatchTouchEvent(ev); } catch (Exception e) { e.printStackTrace(); } } return true; }
Example 8
Source Project: KUtils-master File: BGAGuideLinkageLayout.java License: Apache License 2.0 | 5 votes |
@Override public boolean dispatchTouchEvent(MotionEvent ev) { for (int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); try { child.dispatchTouchEvent(ev); } catch (Exception e) { e.printStackTrace(); } } return true; }
Example 9
Source Project: DateTimePicker File: TimePickerClockDelegate.java License: Apache License 2.0 | 5 votes |
@Override public boolean onTouch(View view, MotionEvent motionEvent) { final int actionMasked = motionEvent.getActionMasked(); if (actionMasked == MotionEvent.ACTION_DOWN) { if (view instanceof ViewGroup) { mInitialTouchTarget = findNearestChild((ViewGroup) view, (int) motionEvent.getX(), (int) motionEvent.getY()); } else { mInitialTouchTarget = null; } } final View child = mInitialTouchTarget; if (child == null) { return false; } final float offsetX = view.getScrollX() - child.getLeft(); final float offsetY = view.getScrollY() - child.getTop(); motionEvent.offsetLocation(offsetX, offsetY); final boolean handled = child.dispatchTouchEvent(motionEvent); motionEvent.offsetLocation(-offsetX, -offsetY); if (actionMasked == MotionEvent.ACTION_UP || actionMasked == MotionEvent.ACTION_CANCEL) { mInitialTouchTarget = null; } return handled; }
Example 10
Source Project: delion File: LayoutManager.java License: Apache License 2.0 | 5 votes |
@Override public boolean propagateEvent(MotionEvent e) { if (e == null) return false; View view = getActiveLayout().getViewForInteraction(); if (view == null) return false; e.offsetLocation(-view.getLeft(), -view.getTop()); return view.dispatchTouchEvent(e); }
Example 11
Source Project: delion File: SnackbarView.java License: Apache License 2.0 | 5 votes |
@Override public boolean onTouchEvent(CoordinatorLayout parent, View child, MotionEvent ev) { if (!isInBounds(ev, child)) return false; ev.offsetLocation(-child.getX(), -child.getY()); child.dispatchTouchEvent(ev); return true; }
Example 12
Source Project: materialandroid File: PasswordEditTextTest.java License: Apache License 2.0 | 5 votes |
private void fireTouchEvent(View view, float xPosition, float yPosition, int actionDown) { MotionEvent motionEvent = MotionEvent.obtain( SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), actionDown, xPosition, yPosition, 0 ); view.dispatchTouchEvent(motionEvent); }
Example 13
Source Project: AndroidChromium File: CompositorViewHolderBehavior.java License: Apache License 2.0 | 5 votes |
@Override public boolean onTouchEvent(CoordinatorLayout parent, View child, MotionEvent ev) { if (!mShouldIntercept) return false; ev.offsetLocation(-child.getX(), -child.getY()); child.dispatchTouchEvent(ev); return true; }
Example 14
Source Project: AndroidChromium File: LayoutManager.java License: Apache License 2.0 | 5 votes |
@Override public boolean propagateEvent(MotionEvent e) { if (e == null) return false; View view = getActiveLayout().getViewForInteraction(); if (view == null) return false; e.offsetLocation(-view.getLeft(), -view.getTop()); return view.dispatchTouchEvent(e); }
Example 15
Source Project: BigApp_Discuz_Android File: ClickSliderView.java License: Apache License 2.0 | 5 votes |
public boolean dispatchTouchEventToView(View view, MotionEvent ev) { try { return view.dispatchTouchEvent(ev); } catch (Exception e) { // 部分机型会抛异常 e.printStackTrace(); } return false; }
Example 16
Source Project: UltimateAndroid File: ObservableWebViewWithHeader.java License: Apache License 2.0 | 5 votes |
@Override public boolean dispatchTouchEvent(MotionEvent me){ boolean wasInTitle = false; switch(me.getActionMasked()){ case MotionEvent.ACTION_DOWN: touchInHeader = (me.getY() <= visibleHeaderHeight()); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: wasInTitle = touchInHeader; touchInHeader = false; break; } if (touchInHeader || wasInTitle) { View title = getChildAt(0); if(title!=null) { // this touch belongs to title bar, dispatch it here me.offsetLocation(0, getScrollY()); return title.dispatchTouchEvent(me); } } // this is our touch, offset and process me.offsetLocation(0, -headerHeight); return super.dispatchTouchEvent(me); }
Example 17
Source Project: SlideLayout File: SlideLayout.java License: GNU General Public License v2.0 | 5 votes |
private boolean cancelMotionEvent(MotionEvent event, View mDispatchView){ MotionEvent cancelEvent = MotionEvent.obtain(event); cancelEvent.setAction(MotionEvent.ACTION_CANCEL | (event.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT)); boolean result; if(mDispatchView != null) result = mDispatchView.dispatchTouchEvent(cancelEvent) || super.dispatchTouchEvent(cancelEvent); else result = super.dispatchTouchEvent(cancelEvent); cancelEvent.recycle(); return result; }
Example 18
Source Project: WayHoo File: TouchInterceptionFrameLayout.java License: Apache License 2.0 | 5 votes |
/** * Duplicate touch events to child views. * We want to dispatch a down motion event and the move events to * child views, but calling dispatchTouchEvent() causes StackOverflowError. * Therefore we do it manually. * * @param ev motion event to be passed to children * @param pendingEvents pending events like ACTION_DOWN. This will be passed to the children before ev */ private void duplicateTouchEventForChildren(MotionEvent ev, MotionEvent... pendingEvents) { if (ev == null) { return; } for (int i = getChildCount() - 1; 0 <= i; i--) { View childView = getChildAt(i); if (childView != null) { Rect childRect = new Rect(); childView.getHitRect(childRect); MotionEvent event = MotionEvent.obtainNoHistory(ev); if (!childRect.contains((int) event.getX(), (int) event.getY())) { continue; } float offsetX = -childView.getLeft(); float offsetY = -childView.getTop(); boolean consumed = false; if (pendingEvents != null) { for (MotionEvent pe : pendingEvents) { if (pe != null) { MotionEvent peAdjusted = MotionEvent.obtainNoHistory(pe); peAdjusted.offsetLocation(offsetX, offsetY); consumed |= childView.dispatchTouchEvent(peAdjusted); } } } event.offsetLocation(offsetX, offsetY); consumed |= childView.dispatchTouchEvent(event); if (consumed) { break; } } } }
Example 19
Source Project: android_9.0.0_r45 File: ZoomButtonsController.java License: Apache License 2.0 | 4 votes |
/** * @hide The ZoomButtonsController implements the OnTouchListener, but this * does not need to be shown in its public API. */ public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); if (event.getPointerCount() > 1) { // ZoomButtonsController doesn't handle mutitouch. Give up control. return false; } if (mReleaseTouchListenerOnUp) { // The controls were dismissed but we need to throw away all events until the up if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { mOwnerView.setOnTouchListener(null); setTouchTargetView(null); mReleaseTouchListenerOnUp = false; } // Eat this event return true; } dismissControlsDelayed(ZOOM_CONTROLS_TIMEOUT); View targetView = mTouchTargetView; switch (action) { case MotionEvent.ACTION_DOWN: targetView = findViewForTouch((int) event.getRawX(), (int) event.getRawY()); setTouchTargetView(targetView); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: setTouchTargetView(null); break; } if (targetView != null) { // The upperleft corner of the target view in raw coordinates int targetViewRawX = mContainerRawLocation[0] + mTouchTargetWindowLocation[0]; int targetViewRawY = mContainerRawLocation[1] + mTouchTargetWindowLocation[1]; MotionEvent containerEvent = MotionEvent.obtain(event); // Convert the motion event into the target view's coordinates (from // owner view's coordinates) containerEvent.offsetLocation(mOwnerViewRawLocation[0] - targetViewRawX, mOwnerViewRawLocation[1] - targetViewRawY); /* Disallow negative coordinates (which can occur due to * ZOOM_CONTROLS_TOUCH_PADDING) */ // These are floats because we need to potentially offset away this exact amount float containerX = containerEvent.getX(); float containerY = containerEvent.getY(); if (containerX < 0 && containerX > -ZOOM_CONTROLS_TOUCH_PADDING) { containerEvent.offsetLocation(-containerX, 0); } if (containerY < 0 && containerY > -ZOOM_CONTROLS_TOUCH_PADDING) { containerEvent.offsetLocation(0, -containerY); } boolean retValue = targetView.dispatchTouchEvent(containerEvent); containerEvent.recycle(); return retValue; } else { return false; } }
Example 20
Source Project: litho File: TouchExpansionDelegateTest.java License: Apache License 2.0 | 4 votes |
public static void emulateClickEvent(View view, int x, int y) { MotionEvent down = obtain(uptimeMillis(), uptimeMillis(), ACTION_DOWN, x, y, 0); MotionEvent up = obtain(uptimeMillis() + 10, uptimeMillis() + 10, ACTION_UP, x, y, 0); view.dispatchTouchEvent(down); view.dispatchTouchEvent(up); }