diff --git a/Libraries/Components/ScrollResponder.js b/Libraries/Components/ScrollResponder.js index b385b87b8ad..e6ef4c554a5 100644 --- a/Libraries/Components/ScrollResponder.js +++ b/Libraries/Components/ScrollResponder.js @@ -353,19 +353,11 @@ var ScrollResponderMixin = { * can also be used to quickly scroll to any element we want to focus */ scrollResponderScrollTo: function(offsetX: number, offsetY: number, animated: boolean = true) { - if (Platform.OS === 'android') { - UIManager.dispatchViewManagerCommand( - React.findNodeHandle(this), - UIManager.RCTScrollView.Commands[animated ? 'scrollTo' : 'scrollWithoutAnimationTo'], - [Math.round(offsetX), Math.round(offsetY)], - ); - } else { - ScrollViewManager.scrollTo( - React.findNodeHandle(this), - { x: offsetX, y: offsetY }, - animated - ); - } + UIManager.dispatchViewManagerCommand( + React.findNodeHandle(this), + UIManager.RCTScrollView.Commands.scrollTo, + [offsetX, offsetY, animated], + ); }, /** diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/recyclerview/RecyclerViewBackedScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/recyclerview/RecyclerViewBackedScrollViewManager.java index cafd71de882..dfac0da4e10 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/recyclerview/RecyclerViewBackedScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/recyclerview/RecyclerViewBackedScrollViewManager.java @@ -75,16 +75,9 @@ public class RecyclerViewBackedScrollViewManager extends @Override public void scrollTo( - RecyclerViewBackedScrollView view, + RecyclerViewBackedScrollView scrollView, ReactScrollViewCommandHelper.ScrollToCommandData data) { - view.scrollTo(data.mDestX, data.mDestY, true); - } - - @Override - public void scrollWithoutAnimationTo( - RecyclerViewBackedScrollView view, - ReactScrollViewCommandHelper.ScrollToCommandData data) { - view.scrollTo(data.mDestX, data.mDestY, false); + scrollView.scrollTo(data.mDestX, data.mDestY, data.mAnimated); } @Override diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index 07a39d4a413..923d35e77ce 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -75,13 +75,10 @@ public class ReactHorizontalScrollViewManager public void scrollTo( ReactHorizontalScrollView scrollView, ReactScrollViewCommandHelper.ScrollToCommandData data) { - scrollView.smoothScrollTo(data.mDestX, data.mDestY); - } - - @Override - public void scrollWithoutAnimationTo( - ReactHorizontalScrollView scrollView, - ReactScrollViewCommandHelper.ScrollToCommandData data) { - scrollView.scrollTo(data.mDestX, data.mDestY); + if (data.mAnimated) { + scrollView.smoothScrollTo(data.mDestX, data.mDestY); + } else { + scrollView.scrollTo(data.mDestX, data.mDestY); + } } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java index a5eb1421c08..aa9560df071 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewCommandHelper.java @@ -25,29 +25,27 @@ import com.facebook.react.common.MapBuilder; public class ReactScrollViewCommandHelper { public static final int COMMAND_SCROLL_TO = 1; - public static final int COMMAND_SCROLL_WITHOUT_ANIMATION_TO = 2; public interface ScrollCommandHandler { void scrollTo(T scrollView, ScrollToCommandData data); - void scrollWithoutAnimationTo(T scrollView, ScrollToCommandData data); } public static class ScrollToCommandData { public final int mDestX, mDestY; + public final boolean mAnimated; - ScrollToCommandData(int destX, int destY) { + ScrollToCommandData(int destX, int destY, boolean animated) { mDestX = destX; mDestY = destY; + mAnimated = animated; } } public static Map getCommandsMap() { return MapBuilder.of( "scrollTo", - COMMAND_SCROLL_TO, - "scrollWithoutAnimationTo", - COMMAND_SCROLL_WITHOUT_ANIMATION_TO); + COMMAND_SCROLL_TO); } public static void receiveCommand( @@ -62,13 +60,8 @@ public class ReactScrollViewCommandHelper { case COMMAND_SCROLL_TO: { int destX = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(0))); int destY = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(1))); - viewManager.scrollTo(scrollView, new ScrollToCommandData(destX, destY)); - return; - } - case COMMAND_SCROLL_WITHOUT_ANIMATION_TO: { - int destX = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(0))); - int destY = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(1))); - viewManager.scrollWithoutAnimationTo(scrollView, new ScrollToCommandData(destX, destY)); + boolean animated = args.getBoolean(2); + viewManager.scrollTo(scrollView, new ScrollToCommandData(destX, destY, animated)); return; } default: diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index 6289ce22dc7..ff71d30ab87 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -82,14 +82,11 @@ public class ReactScrollViewManager public void scrollTo( ReactScrollView scrollView, ReactScrollViewCommandHelper.ScrollToCommandData data) { - scrollView.smoothScrollTo(data.mDestX, data.mDestY); - } - - @Override - public void scrollWithoutAnimationTo( - ReactScrollView scrollView, - ReactScrollViewCommandHelper.ScrollToCommandData data) { - scrollView.scrollTo(data.mDestX, data.mDestY); + if (data.mAnimated) { + scrollView.smoothScrollTo(data.mDestX, data.mDestY); + } else { + scrollView.scrollTo(data.mDestX, data.mDestY); + } } @Override