|
16 | 16 | import android.graphics.Rect;
|
17 | 17 | import android.graphics.drawable.ColorDrawable;
|
18 | 18 | import android.graphics.drawable.Drawable;
|
19 |
| -import android.os.Build; |
20 | 19 | import android.view.KeyEvent;
|
21 | 20 | import android.view.MotionEvent;
|
22 | 21 | import android.view.View;
|
@@ -86,7 +85,7 @@ public class ReactScrollView extends ScrollView
|
86 | 85 | private @Nullable List<Integer> mSnapOffsets;
|
87 | 86 | private boolean mSnapToStart = true;
|
88 | 87 | private boolean mSnapToEnd = true;
|
89 |
| - private View mContentView; |
| 88 | + private @Nullable View mContentView; |
90 | 89 | private ReactViewBackgroundManager mReactBackgroundManager;
|
91 | 90 | private int pendingContentOffsetX = UNSET_CONTENT_OFFSET;
|
92 | 91 | private int pendingContentOffsetY = UNSET_CONTENT_OFFSET;
|
@@ -831,50 +830,46 @@ public void reactSmoothScrollTo(int x, int y) {
|
831 | 830 | // of the animation. This means that, for example, if the user is scrolling rapidly, multiple
|
832 | 831 | // pages could be considered part of one animation, causing some page animations to be animated
|
833 | 832 | // very rapidly - looking like they're not animated at all.
|
834 |
| - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { |
835 |
| - if (mScrollAnimator != null) { |
836 |
| - mScrollAnimator.cancel(); |
837 |
| - } |
| 833 | + if (mScrollAnimator != null) { |
| 834 | + mScrollAnimator.cancel(); |
| 835 | + } |
| 836 | + |
| 837 | + mFinalAnimatedPositionScrollX = x; |
| 838 | + mFinalAnimatedPositionScrollY = y; |
| 839 | + PropertyValuesHolder scrollX = PropertyValuesHolder.ofInt("scrollX", getScrollX(), x); |
| 840 | + PropertyValuesHolder scrollY = PropertyValuesHolder.ofInt("scrollY", getScrollY(), y); |
| 841 | + mScrollAnimator = ObjectAnimator.ofPropertyValuesHolder(scrollX, scrollY); |
| 842 | + mScrollAnimator.setDuration( |
| 843 | + ReactScrollViewHelper.getDefaultScrollAnimationDuration(getContext())); |
| 844 | + mScrollAnimator.addUpdateListener( |
| 845 | + new ValueAnimator.AnimatorUpdateListener() { |
| 846 | + @Override |
| 847 | + public void onAnimationUpdate(ValueAnimator valueAnimator) { |
| 848 | + int scrollValueX = (Integer) valueAnimator.getAnimatedValue("scrollX"); |
| 849 | + int scrollValueY = (Integer) valueAnimator.getAnimatedValue("scrollY"); |
| 850 | + scrollTo(scrollValueX, scrollValueY); |
| 851 | + } |
| 852 | + }); |
| 853 | + mScrollAnimator.addListener( |
| 854 | + new Animator.AnimatorListener() { |
| 855 | + @Override |
| 856 | + public void onAnimationStart(Animator animator) {} |
838 | 857 |
|
839 |
| - mFinalAnimatedPositionScrollX = x; |
840 |
| - mFinalAnimatedPositionScrollY = y; |
841 |
| - PropertyValuesHolder scrollX = PropertyValuesHolder.ofInt("scrollX", getScrollX(), x); |
842 |
| - PropertyValuesHolder scrollY = PropertyValuesHolder.ofInt("scrollY", getScrollY(), y); |
843 |
| - mScrollAnimator = ObjectAnimator.ofPropertyValuesHolder(scrollX, scrollY); |
844 |
| - mScrollAnimator.setDuration( |
845 |
| - ReactScrollViewHelper.getDefaultScrollAnimationDuration(getContext())); |
846 |
| - mScrollAnimator.addUpdateListener( |
847 |
| - new ValueAnimator.AnimatorUpdateListener() { |
848 |
| - @Override |
849 |
| - public void onAnimationUpdate(ValueAnimator valueAnimator) { |
850 |
| - int scrollValueX = (Integer) valueAnimator.getAnimatedValue("scrollX"); |
851 |
| - int scrollValueY = (Integer) valueAnimator.getAnimatedValue("scrollY"); |
852 |
| - scrollTo(scrollValueX, scrollValueY); |
853 |
| - } |
854 |
| - }); |
855 |
| - mScrollAnimator.addListener( |
856 |
| - new Animator.AnimatorListener() { |
857 |
| - @Override |
858 |
| - public void onAnimationStart(Animator animator) {} |
859 |
| - |
860 |
| - @Override |
861 |
| - public void onAnimationEnd(Animator animator) { |
862 |
| - mFinalAnimatedPositionScrollX = -1; |
863 |
| - mFinalAnimatedPositionScrollY = -1; |
864 |
| - mScrollAnimator = null; |
865 |
| - updateStateOnScroll(); |
866 |
| - } |
| 858 | + @Override |
| 859 | + public void onAnimationEnd(Animator animator) { |
| 860 | + mFinalAnimatedPositionScrollX = -1; |
| 861 | + mFinalAnimatedPositionScrollY = -1; |
| 862 | + mScrollAnimator = null; |
| 863 | + updateStateOnScroll(); |
| 864 | + } |
867 | 865 |
|
868 |
| - @Override |
869 |
| - public void onAnimationCancel(Animator animator) {} |
| 866 | + @Override |
| 867 | + public void onAnimationCancel(Animator animator) {} |
870 | 868 |
|
871 |
| - @Override |
872 |
| - public void onAnimationRepeat(Animator animator) {} |
873 |
| - }); |
874 |
| - mScrollAnimator.start(); |
875 |
| - } else { |
876 |
| - smoothScrollTo(x, y); |
877 |
| - } |
| 869 | + @Override |
| 870 | + public void onAnimationRepeat(Animator animator) {} |
| 871 | + }); |
| 872 | + mScrollAnimator.start(); |
878 | 873 | updateStateOnScroll(x, y);
|
879 | 874 | setPendingContentOffsets(x, y);
|
880 | 875 | }
|
|
0 commit comments