@Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (super.onInterceptTouchEvent(ev)) { NativeGestureUtil.notifyNativeGestureStarted(this, ev); mDragging = true; getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher() .dispatchEvent(ScrollEvent.obtain( getId(), ScrollEventType.BEGIN_DRAG, 0, /* offsetX = 0, horizontal scrolling only */ computeVerticalScrollOffset(), 0, // xVelocity 0, // yVelocity getWidth(), computeVerticalScrollRange(), getWidth(), getHeight())); return true; } return false; }
@Override public boolean onTouchEvent(MotionEvent ev) { int action = ev.getAction() & MotionEvent.ACTION_MASK; if (action == MotionEvent.ACTION_UP && mDragging) { mDragging = false; mVelocityHelper.calculateVelocity(ev); getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher() .dispatchEvent(ScrollEvent.obtain( getId(), ScrollEventType.END_DRAG, 0, /* offsetX = 0, horizontal scrolling only */ computeVerticalScrollOffset(), mVelocityHelper.getXVelocity(), mVelocityHelper.getYVelocity(), getWidth(), computeVerticalScrollRange(), getWidth(), getHeight())); } return super.onTouchEvent(ev); }
@Override public void onScrollChanged(int horiz, int vert, int oldHoriz, int oldVert) { if (mPreviousHoriz != horiz || mPreviousVert != vert) { ScrollEvent event = ScrollEvent.obtain( mReactEditText.getId(), ScrollEventType.SCROLL, horiz, vert, 0, // can't get content width 0, // can't get content height mReactEditText.getWidth(), mReactEditText.getHeight() ); mEventDispatcher.dispatchEvent(event); mPreviousHoriz = horiz; mPreviousVert = vert; } }
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); ((ReactContext) getContext()).getNativeModule(UIManagerModule.class).getEventDispatcher() .dispatchEvent(ScrollEvent.obtain( getId(), SystemClock.nanoTime(), ScrollEventType.SCROLL, 0, /* offsetX = 0, horizontal scrolling only */ calculateAbsoluteOffset(), getWidth(), ((ReactListAdapter) getAdapter()).getTotalChildrenHeight(), getWidth(), getHeight())); }
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (mOnScrollDispatchHelper.onScrollChanged(l, t)) { getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher() .dispatchEvent(ScrollEvent.obtain( getId(), ScrollEventType.SCROLL, 0, /* offsetX = 0, horizontal scrolling only */ computeVerticalScrollOffset(), mOnScrollDispatchHelper.getXFlingVelocity(), mOnScrollDispatchHelper.getYFlingVelocity(), getWidth(), computeVerticalScrollRange(), getWidth(), getHeight())); } final int firstIndex = ((LinearLayoutManager) getLayoutManager()).findFirstVisibleItemPosition(); final int lastIndex = ((LinearLayoutManager) getLayoutManager()).findLastVisibleItemPosition(); if (firstIndex != mFirstVisibleIndex || lastIndex != mLastVisibleIndex) { getReactContext().getNativeModule(UIManagerModule.class).getEventDispatcher() .dispatchEvent(new VisibleItemsChangeEvent( getId(), SystemClock.nanoTime(), firstIndex, lastIndex)); mFirstVisibleIndex = firstIndex; mLastVisibleIndex = lastIndex; } }
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); ((ReactContext) getContext()).getNativeModule(UIManagerModule.class).getEventDispatcher() .dispatchEvent(ScrollEvent.obtain( getId(), ScrollEventType.SCROLL, 0, /* offsetX = 0, horizontal scrolling only */ calculateAbsoluteOffset(), getWidth(), ((ReactListAdapter) getAdapter()).getTotalChildrenHeight(), getWidth(), getHeight())); }