From 2eabe8307cc04e0becff0b0bd41bbc5a23f73076 Mon Sep 17 00:00:00 2001 From: almouro Date: Mon, 18 Sep 2023 16:07:11 +0200 Subject: [PATCH 1/2] fix: abortAnimation on scrollto for horizontal scrollviews on android --- .../react/views/scroll/ReactHorizontalScrollView.java | 6 ++++++ .../views/scroll/ReactHorizontalScrollViewManager.java | 1 + 2 files changed, 7 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java index cfac976347ebed..7dbcb788c3ac32 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java @@ -231,6 +231,12 @@ public void setDecelerationRate(float decelerationRate) { } } + public void abortAnimation() { + if (mScroller != null && !mScroller.isFinished()) { + mScroller.abortAnimation(); + } + } + public void setSnapInterval(int snapInterval) { mSnapInterval = snapInterval; } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index 85f784833b502a..7513f78ba999ba 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -199,6 +199,7 @@ public void flashScrollIndicators(ReactHorizontalScrollView scrollView) { @Override public void scrollTo( ReactHorizontalScrollView scrollView, ReactScrollViewCommandHelper.ScrollToCommandData data) { + scrollView.abortAnimation(); if (data.mAnimated) { scrollView.reactSmoothScrollTo(data.mDestX, data.mDestY); } else { From 6b6c066bb06253f810baebd5eaa291d44af97320 Mon Sep 17 00:00:00 2001 From: almouro Date: Mon, 18 Sep 2023 16:08:10 +0200 Subject: [PATCH 2/2] fix: abortAnimation on scrolltoend for scrollviews on android --- .../react/views/scroll/ReactHorizontalScrollViewManager.java | 1 + .../com/facebook/react/views/scroll/ReactScrollViewManager.java | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index 7513f78ba999ba..d311a236ed96f7 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -220,6 +220,7 @@ public void scrollToEnd( "scrollToEnd called on HorizontalScrollView without child"); } int right = child.getWidth() + scrollView.getPaddingRight(); + scrollView.abortAnimation(); if (data.mAnimated) { scrollView.reactSmoothScrollTo(right, scrollView.getScrollY()); } else { diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index af022790a818b4..1b42aaefefcf92 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -296,6 +296,7 @@ public void scrollToEnd( // ScrollView always has one child - the scrollable area int bottom = child.getHeight() + scrollView.getPaddingBottom(); + scrollView.abortAnimation(); if (data.mAnimated) { scrollView.reactSmoothScrollTo(scrollView.getScrollX(), bottom); } else {