Revert D13860038: [react-native][PR] Add ability to control scroll animation duration for Android

Differential Revision:
D13860038

Original commit changeset: f06751d063a3

fbshipit-source-id: 5d89137aed0d549004e790068c1e4998ebccdaf1
This commit is contained in:
Kevin Gozali
2019-01-29 17:32:37 -08:00
committed by Facebook Github Bot
parent c16fadb7c3
commit 4c69ccd0fb
9 changed files with 26 additions and 131 deletions
@@ -7,8 +7,6 @@
package com.facebook.react.views.scroll;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Canvas;
@@ -57,7 +55,6 @@ public class ReactHorizontalScrollView extends HorizontalScrollView implements
private final Rect mRect = new Rect();
private boolean mActivelyScrolling;
private @Nullable ObjectAnimator mAnimator = null;
private @Nullable Rect mClippingRect;
private @Nullable String mOverflow = ViewProps.HIDDEN;
private boolean mDragging;
@@ -186,20 +183,6 @@ public class ReactHorizontalScrollView extends HorizontalScrollView implements
awakenScrollBars();
}
/**
* Method for animating to a ScrollView position with a given duration,
* instead of using "smoothScrollTo", which does not expose a duration argument.
*/
public void animateScroll(int mDestX, int mDestY, int mDuration) {
if (mAnimator != null) {
mAnimator.cancel();
}
PropertyValuesHolder scrollX = PropertyValuesHolder.ofInt("scrollX", mDestX);
PropertyValuesHolder scrollY = PropertyValuesHolder.ofInt("scrollY", mDestY);
mAnimator = ObjectAnimator.ofPropertyValuesHolder(this, scrollX, scrollY);
mAnimator.setDuration(mDuration).start();
}
public void setOverflow(String overflow) {
mOverflow = overflow;
invalidate();
@@ -283,11 +266,6 @@ public class ReactHorizontalScrollView extends HorizontalScrollView implements
return false;
}
if (mAnimator != null) {
mAnimator.cancel();
mAnimator = null;
}
mVelocityHelper.calculateVelocity(ev);
int action = ev.getAction() & MotionEvent.ACTION_MASK;
if (action == MotionEvent.ACTION_UP && mDragging) {
@@ -171,13 +171,8 @@ public class ReactHorizontalScrollViewManager
@Override
public void scrollTo(
ReactHorizontalScrollView scrollView, ReactScrollViewCommandHelper.ScrollToCommandData data) {
if (data.mAnimated && data.mDuration != 0) {
if (data.mDuration > 0) {
// data.mDuration set to -1 to fallbacks to default platform behavior
scrollView.animateScroll(data.mDestX, data.mDestY, data.mDuration);
} else {
scrollView.smoothScrollTo(data.mDestX, data.mDestY);
}
if (data.mAnimated) {
scrollView.smoothScrollTo(data.mDestX, data.mDestY);
} else {
scrollView.scrollTo(data.mDestX, data.mDestY);
}
@@ -190,13 +185,8 @@ public class ReactHorizontalScrollViewManager
// ScrollView always has one child - the scrollable area
int right =
scrollView.getChildAt(0).getWidth() + scrollView.getPaddingRight();
if (data.mAnimated && data.mDuration != 0) {
if (data.mDuration > 0) {
// data.mDuration set to -1 to fallbacks to default platform behavior
scrollView.animateScroll(right, scrollView.getScrollY(), data.mDuration);
} else {
scrollView.smoothScrollTo(right, scrollView.getScrollY());
}
if (data.mAnimated) {
scrollView.smoothScrollTo(right, scrollView.getScrollY());
} else {
scrollView.scrollTo(right, scrollView.getScrollY());
}
@@ -7,8 +7,6 @@
package com.facebook.react.views.scroll;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.annotation.TargetApi;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -55,7 +53,6 @@ public class ReactScrollView extends ScrollView implements ReactClippingViewGrou
private final VelocityHelper mVelocityHelper = new VelocityHelper();
private final Rect mRect = new Rect(); // for reuse to avoid allocation
private @Nullable ObjectAnimator mAnimator = null;
private boolean mActivelyScrolling;
private @Nullable Rect mClippingRect;
private @Nullable String mOverflow = ViewProps.HIDDEN;
@@ -174,20 +171,6 @@ public class ReactScrollView extends ScrollView implements ReactClippingViewGrou
awakenScrollBars();
}
/**
* Method for animating to a ScrollView position with a given duration,
* instead of using "smoothScrollTo", which does not expose a duration argument.
*/
public void animateScroll(int mDestX, int mDestY, int mDuration) {
if (mAnimator != null) {
mAnimator.cancel();
}
PropertyValuesHolder scrollX = PropertyValuesHolder.ofInt("scrollX", mDestX);
PropertyValuesHolder scrollY = PropertyValuesHolder.ofInt("scrollY", mDestY);
mAnimator = ObjectAnimator.ofPropertyValuesHolder(this, scrollX, scrollY);
mAnimator.setDuration(mDuration).start();
}
public void setOverflow(String overflow) {
mOverflow = overflow;
invalidate();
@@ -272,11 +255,6 @@ public class ReactScrollView extends ScrollView implements ReactClippingViewGrou
return false;
}
if (mAnimator != null) {
mAnimator.cancel();
mAnimator = null;
}
mVelocityHelper.calculateVelocity(ev);
int action = ev.getAction() & MotionEvent.ACTION_MASK;
if (action == MotionEvent.ACTION_UP && mDragging) {
@@ -32,25 +32,22 @@ public class ReactScrollViewCommandHelper {
public static class ScrollToCommandData {
public final int mDestX, mDestY, mDuration;
public final int mDestX, mDestY;
public final boolean mAnimated;
ScrollToCommandData(int destX, int destY, boolean animated, int duration) {
ScrollToCommandData(int destX, int destY, boolean animated) {
mDestX = destX;
mDestY = destY;
mAnimated = animated;
mDuration = duration;
}
}
public static class ScrollToEndCommandData {
public final int mDuration;
public final boolean mAnimated;
ScrollToEndCommandData(boolean animated, int duration) {
ScrollToEndCommandData(boolean animated) {
mAnimated = animated;
mDuration = duration;
}
}
@@ -77,14 +74,12 @@ public class ReactScrollViewCommandHelper {
int destX = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(0)));
int destY = Math.round(PixelUtil.toPixelFromDIP(args.getDouble(1)));
boolean animated = args.getBoolean(2);
int duration = (int) Math.round(args.getDouble(3));
viewManager.scrollTo(scrollView, new ScrollToCommandData(destX, destY, animated, duration));
viewManager.scrollTo(scrollView, new ScrollToCommandData(destX, destY, animated));
return;
}
case COMMAND_SCROLL_TO_END: {
boolean animated = args.getBoolean(0);
int duration = (int) Math.round(args.getDouble(1));
viewManager.scrollToEnd(scrollView, new ScrollToEndCommandData(animated, duration));
viewManager.scrollToEnd(scrollView, new ScrollToEndCommandData(animated));
return;
}
case COMMAND_FLASH_SCROLL_INDICATORS:
@@ -7,8 +7,6 @@
package com.facebook.react.views.scroll;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.view.View;
import android.view.ViewGroup;
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
@@ -191,13 +191,8 @@ public class ReactScrollViewManager
@Override
public void scrollTo(
ReactScrollView scrollView, ReactScrollViewCommandHelper.ScrollToCommandData data) {
if (data.mAnimated && data.mDuration != 0) {
if (data.mDuration > 0) {
// data.mDuration set to -1 to fallbacks to default platform behavior
scrollView.animateScroll(data.mDestX, data.mDestY, data.mDuration);
} else {
scrollView.smoothScrollTo(data.mDestX, data.mDestY);
}
if (data.mAnimated) {
scrollView.smoothScrollTo(data.mDestX, data.mDestY);
} else {
scrollView.scrollTo(data.mDestX, data.mDestY);
}
@@ -262,13 +257,8 @@ public class ReactScrollViewManager
// ScrollView always has one child - the scrollable area
int bottom =
scrollView.getChildAt(0).getHeight() + scrollView.getPaddingBottom();
if (data.mAnimated && data.mDuration != 0) {
if (data.mDuration > 0) {
// data.mDuration set to -1 to fallbacks to default platform behavior
scrollView.animateScroll(scrollView.getScrollX(), bottom, data.mDuration);
} else {
scrollView.smoothScrollTo(scrollView.getScrollX(), bottom);
}
if (data.mAnimated) {
scrollView.smoothScrollTo(scrollView.getScrollX(), bottom);
} else {
scrollView.scrollTo(scrollView.getScrollX(), bottom);
}