Deprecate ScrollerCompat after minSdk 14 bump.
ScrollerCompat can be completely replaced by OverScroller that was
added in API14 which ScrollerCompat wraps.
Bug: 32794064
Test: ./gradlew assemble
Change-Id: Ice79dd122b00e1b3c92dea3a95446ac897135a84
diff --git a/api/current.txt b/api/current.txt
index b767ee7..aa8f97d 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -8626,25 +8626,25 @@
method public void setViewResource(int);
}
- public final class ScrollerCompat {
- method public void abortAnimation();
- method public boolean computeScrollOffset();
- method public static android.support.v4.widget.ScrollerCompat create(android.content.Context);
- method public static android.support.v4.widget.ScrollerCompat create(android.content.Context, android.view.animation.Interpolator);
- method public void fling(int, int, int, int, int, int, int, int);
- method public void fling(int, int, int, int, int, int, int, int, int, int);
- method public float getCurrVelocity();
- method public int getCurrX();
- method public int getCurrY();
- method public int getFinalX();
- method public int getFinalY();
- method public boolean isFinished();
- method public boolean isOverScrolled();
- method public void notifyHorizontalEdgeReached(int, int, int);
- method public void notifyVerticalEdgeReached(int, int, int);
- method public boolean springBack(int, int, int, int, int, int);
- method public void startScroll(int, int, int, int);
- method public void startScroll(int, int, int, int, int);
+ public final deprecated class ScrollerCompat {
+ method public deprecated void abortAnimation();
+ method public deprecated boolean computeScrollOffset();
+ method public static deprecated android.support.v4.widget.ScrollerCompat create(android.content.Context);
+ method public static deprecated android.support.v4.widget.ScrollerCompat create(android.content.Context, android.view.animation.Interpolator);
+ method public deprecated void fling(int, int, int, int, int, int, int, int);
+ method public deprecated void fling(int, int, int, int, int, int, int, int, int, int);
+ method public deprecated float getCurrVelocity();
+ method public deprecated int getCurrX();
+ method public deprecated int getCurrY();
+ method public deprecated int getFinalX();
+ method public deprecated int getFinalY();
+ method public deprecated boolean isFinished();
+ method public deprecated boolean isOverScrolled();
+ method public deprecated void notifyHorizontalEdgeReached(int, int, int);
+ method public deprecated void notifyVerticalEdgeReached(int, int, int);
+ method public deprecated boolean springBack(int, int, int, int, int, int);
+ method public deprecated void startScroll(int, int, int, int);
+ method public deprecated void startScroll(int, int, int, int, int);
}
public final deprecated class SearchViewCompat {
diff --git a/compat/ics/android/support/v4/widget/ScrollerCompatIcs.java b/compat/ics/android/support/v4/widget/ScrollerCompatIcs.java
deleted file mode 100644
index cce00c6..0000000
--- a/compat/ics/android/support/v4/widget/ScrollerCompatIcs.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.support.v4.widget;
-
-import android.support.annotation.RequiresApi;
-import android.widget.OverScroller;
-
-/**
- * ICS API access for ScrollerCompat
- */
-
-@RequiresApi(14)
-class ScrollerCompatIcs {
- public static float getCurrVelocity(Object scroller) {
- return ((OverScroller) scroller).getCurrVelocity();
- }
-}
diff --git a/compat/java/android/support/v4/widget/ScrollerCompat.java b/compat/java/android/support/v4/widget/ScrollerCompat.java
index 0161574..8e8645c 100644
--- a/compat/java/android/support/v4/widget/ScrollerCompat.java
+++ b/compat/java/android/support/v4/widget/ScrollerCompat.java
@@ -17,11 +17,8 @@
package android.support.v4.widget;
import android.content.Context;
-import android.os.Build;
-import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.OverScroller;
-import android.widget.Scroller;
/**
* Provides access to new {@link android.widget.Scroller Scroller} APIs when available.
@@ -29,25 +26,34 @@
* <p>This class provides a platform version-independent mechanism for obeying the
* current device's preferred scroll physics and fling behavior. It offers a subset of
* the APIs from Scroller or OverScroller.</p>
+ *
+ * @deprecated Use {@link OverScroller} directly.
*/
+@Deprecated
public final class ScrollerCompat {
OverScroller mScroller;
- private final boolean mIsIcsOrNewer;
+ /**
+ * @deprecated Use {@link OverScroller} constructor directly.
+ */
+ @Deprecated
public static ScrollerCompat create(Context context) {
return create(context, null);
}
+ /**
+ * @deprecated Use {@link OverScroller} constructor directly.
+ */
+ @Deprecated
public static ScrollerCompat create(Context context, Interpolator interpolator) {
- return new ScrollerCompat(Build.VERSION.SDK_INT >= 14, context, interpolator);
+ return new ScrollerCompat(context, interpolator);
}
/**
* Package protected constructor that allows to specify if API version is newer than ICS.
* It is useful for unit testing.
*/
- ScrollerCompat(boolean isIcsOrNewer, Context context, Interpolator interpolator) {
- mIsIcsOrNewer = isIcsOrNewer;
+ ScrollerCompat(Context context, Interpolator interpolator) {
mScroller = interpolator != null ?
new OverScroller(context, interpolator) : new OverScroller(context);
}
@@ -56,7 +62,10 @@
* Returns whether the scroller has finished scrolling.
*
* @return True if the scroller has finished scrolling, false otherwise.
+ *
+ * @deprecated Use {@link OverScroller#isFinished()} directly.
*/
+ @Deprecated
public boolean isFinished() {
return mScroller.isFinished();
}
@@ -65,7 +74,10 @@
* Returns the current X offset in the scroll.
*
* @return The new X offset as an absolute distance from the origin.
+ *
+ * @deprecated Use {@link OverScroller#getCurrX()} directly.
*/
+ @Deprecated
public int getCurrX() {
return mScroller.getCurrX();
}
@@ -74,21 +86,30 @@
* Returns the current Y offset in the scroll.
*
* @return The new Y offset as an absolute distance from the origin.
+ *
+ * @deprecated Use {@link OverScroller#getCurrY()} directly.
*/
+ @Deprecated
public int getCurrY() {
return mScroller.getCurrY();
}
/**
* @return The final X position for the scroll in progress, if known.
+ *
+ * @deprecated Use {@link OverScroller#getFinalX()} directly.
*/
+ @Deprecated
public int getFinalX() {
return mScroller.getFinalX();
}
/**
* @return The final Y position for the scroll in progress, if known.
+ *
+ * @deprecated Use {@link OverScroller#getFinalY()} directly.
*/
+ @Deprecated
public int getFinalY() {
return mScroller.getFinalY();
}
@@ -96,22 +117,27 @@
/**
* Returns the current velocity on platform versions that support it.
*
- * <p>The device must support at least API level 14 (Ice Cream Sandwich).
- * On older platform versions this method will return 0. This method should
- * only be used as input for nonessential visual effects such as {@link EdgeEffectCompat}.</p>
+ * <p> This method should only be used as input for nonessential visual effects such as
+ * {@link EdgeEffectCompat}.</p>
*
* @return The original velocity less the deceleration. Result may be
* negative.
+ *
+ * @deprecated Use {@link OverScroller#getCurrVelocity()} directly.
*/
+ @Deprecated
public float getCurrVelocity() {
- return mIsIcsOrNewer ? ScrollerCompatIcs.getCurrVelocity(mScroller) : 0;
+ return mScroller.getCurrVelocity();
}
/**
* Call this when you want to know the new location. If it returns true,
* the animation is not yet finished. loc will be altered to provide the
* new location.
+ *
+ * @deprecated Use {@link OverScroller#computeScrollOffset()} directly.
*/
+ @Deprecated
public boolean computeScrollOffset() {
return mScroller.computeScrollOffset();
}
@@ -129,7 +155,10 @@
* content to the left.
* @param dy Vertical distance to travel. Positive numbers will scroll the
* content up.
+ *
+ * @deprecated Use {@link OverScroller#getCurrX()} directly.
*/
+ @Deprecated
public void startScroll(int startX, int startY, int dx, int dy) {
mScroller.startScroll(startX, startY, dx, dy);
}
@@ -146,7 +175,10 @@
* @param dy Vertical distance to travel. Positive numbers will scroll the
* content up.
* @param duration Duration of the scroll in milliseconds.
+ *
+ * @deprecated Use {@link OverScroller#startScroll(int, int, int, int, int)} directly.
*/
+ @Deprecated
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
mScroller.startScroll(startX, startY, dx, dy, duration);
}
@@ -169,7 +201,10 @@
* point.
* @param maxY Maximum Y value. The scroller will not scroll past this
* point.
+ *
+ * @deprecated Use {@link OverScroller#fling(int, int, int, int, int, int, int, int)} directly.
*/
+ @Deprecated
public void fling(int startX, int startY, int velocityX, int velocityY,
int minX, int maxX, int minY, int maxY) {
mScroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY);
@@ -197,7 +232,11 @@
* direction will be possible.
* @param overY Overfling range. If > 0, vertical overfling in either
* direction will be possible.
+ *
+ * @deprecated Use {@link OverScroller#fling(int, int, int, int, int, int, int, int, int, int)}
+ * directly.
*/
+ @Deprecated
public void fling(int startX, int startY, int velocityX, int velocityY,
int minX, int maxX, int minY, int maxY, int overX, int overY) {
mScroller.fling(startX, startY, velocityX, velocityY,
@@ -215,7 +254,10 @@
* @param maxY Maximum valid Y value
* @return true if a springback was initiated, false if startX and startY were
* already within the valid range.
+ *
+ * @deprecated Use {@link OverScroller#springBack(int, int, int, int, int, int)} directly.
*/
+ @Deprecated
public boolean springBack(int startX, int startY, int minX, int maxX, int minY, int maxY) {
return mScroller.springBack(startX, startY, minX, maxX, minY, maxY);
}
@@ -223,7 +265,10 @@
/**
* Stops the animation. Aborting the animation causes the scroller to move to the final x and y
* position.
+ *
+ * @deprecated Use {@link OverScroller#abortAnimation()} directly.
*/
+ @Deprecated
public void abortAnimation() {
mScroller.abortAnimation();
}
@@ -241,7 +286,10 @@
* @param finalX Desired final X position
* @param overX Magnitude of overscroll allowed. This should be the maximum
* desired distance from finalX. Absolute value - must be positive.
+ *
+ * @deprecated Use {@link OverScroller#notifyHorizontalEdgeReached(int, int, int)} directly.
*/
+ @Deprecated
public void notifyHorizontalEdgeReached(int startX, int finalX, int overX) {
mScroller.notifyHorizontalEdgeReached(startX, finalX, overX);
}
@@ -258,7 +306,10 @@
* @param finalY Desired final Y position
* @param overY Magnitude of overscroll allowed. This should be the maximum
* desired distance from finalY. Absolute value - must be positive.
+ *
+ * @deprecated Use {@link OverScroller#notifyVerticalEdgeReached(int, int, int)} directly.
*/
+ @Deprecated
public void notifyVerticalEdgeReached(int startY, int finalY, int overY) {
mScroller.notifyVerticalEdgeReached(startY, finalY, overY);
}
@@ -275,7 +326,10 @@
*
* @return true when the current position is overscrolled and in the process of
* interpolating back to a valid value.
+ *
+ * @deprecated Use {@link OverScroller#isOverScrolled()} directly.
*/
+ @Deprecated
public boolean isOverScrolled() {
return mScroller.isOverScrolled();
}
diff --git a/compat/tests/java/android/support/v4/widget/GingerbreadScrollerCompatTest.java b/compat/tests/java/android/support/v4/widget/GingerbreadScrollerCompatTest.java
deleted file mode 100644
index b1642f3..0000000
--- a/compat/tests/java/android/support/v4/widget/GingerbreadScrollerCompatTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.support.v4.widget;
-
-public class GingerbreadScrollerCompatTest extends ScrollerCompatTestBase {
- public GingerbreadScrollerCompatTest() {
- super(false);
- }
-}
diff --git a/compat/tests/java/android/support/v4/widget/IcsScrollerCompatTest.java b/compat/tests/java/android/support/v4/widget/IcsScrollerCompatTest.java
deleted file mode 100644
index 1516d54..0000000
--- a/compat/tests/java/android/support/v4/widget/IcsScrollerCompatTest.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.support.v4.widget;
-
-public class IcsScrollerCompatTest extends ScrollerCompatTestBase {
- public IcsScrollerCompatTest() {
- super(true);
- }
-}
diff --git a/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java b/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java
index ac6cdd0..41821ee 100644
--- a/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java
+++ b/compat/tests/java/android/support/v4/widget/ScrollerCompatTestBase.java
@@ -32,26 +32,19 @@
@RunWith(AndroidJUnit4.class)
@MediumTest
-public abstract class ScrollerCompatTestBase {
+public class ScrollerCompatTestBase {
private static final boolean DEBUG = false;
- private final String TAG;
-
- private final boolean mIsIcsOrNewer;
+ private static final String TAG = "ScrollerCompatTest";
private ScrollerCompat mScroller;
- public ScrollerCompatTestBase(boolean isIcsOrNewer) {
- mIsIcsOrNewer = isIcsOrNewer;
- TAG = "ScrollerCompatTest ICS or newer:" + isIcsOrNewer;
- }
protected void createScroller(Interpolator interpolator)
throws NoSuchMethodException, IllegalAccessException, InvocationTargetException,
InstantiationException {
- mScroller = new ScrollerCompat(mIsIcsOrNewer, InstrumentationRegistry.getContext(),
- interpolator);
+ mScroller = new ScrollerCompat(InstrumentationRegistry.getContext(), interpolator);
}
@Test
diff --git a/core-ui/java/android/support/v4/widget/NestedScrollView.java b/core-ui/java/android/support/v4/widget/NestedScrollView.java
index 2bc09d1..709165f 100644
--- a/core-ui/java/android/support/v4/widget/NestedScrollView.java
+++ b/core-ui/java/android/support/v4/widget/NestedScrollView.java
@@ -53,6 +53,7 @@
import android.view.animation.AnimationUtils;
import android.widget.EdgeEffect;
import android.widget.FrameLayout;
+import android.widget.OverScroller;
import android.widget.ScrollView;
import java.util.List;
@@ -95,7 +96,7 @@
private long mLastScroll;
private final Rect mTempRect = new Rect();
- private ScrollerCompat mScroller;
+ private OverScroller mScroller;
private EdgeEffect mEdgeGlowTop;
private EdgeEffect mEdgeGlowBottom;
@@ -355,7 +356,7 @@
}
private void initScrollView() {
- mScroller = ScrollerCompat.create(getContext(), null);
+ mScroller = new OverScroller(getContext());
setFocusable(true);
setDescendantFocusability(FOCUS_AFTER_DESCENDANTS);
setWillNotDraw(false);
diff --git a/core-ui/java/android/support/v4/widget/ViewDragHelper.java b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
index 58cb414..cd16c08 100644
--- a/core-ui/java/android/support/v4/widget/ViewDragHelper.java
+++ b/core-ui/java/android/support/v4/widget/ViewDragHelper.java
@@ -26,6 +26,7 @@
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.animation.Interpolator;
+import android.widget.OverScroller;
import java.util.Arrays;
@@ -128,7 +129,7 @@
private int mEdgeSize;
private int mTrackingEdges;
- private ScrollerCompat mScroller;
+ private OverScroller mScroller;
private final Callback mCallback;
@@ -389,7 +390,7 @@
mTouchSlop = vc.getScaledTouchSlop();
mMaxVelocity = vc.getScaledMaximumFlingVelocity();
mMinVelocity = vc.getScaledMinimumFlingVelocity();
- mScroller = ScrollerCompat.create(context, sInterpolator);
+ mScroller = new OverScroller(context, sInterpolator);
}
/**
diff --git a/design/src/android/support/design/widget/HeaderBehavior.java b/design/src/android/support/design/widget/HeaderBehavior.java
index 3420bd4..abb64e2 100644
--- a/design/src/android/support/design/widget/HeaderBehavior.java
+++ b/design/src/android/support/design/widget/HeaderBehavior.java
@@ -19,12 +19,12 @@
import android.content.Context;
import android.support.design.widget.CoordinatorLayout.Behavior;
import android.support.v4.view.ViewCompat;
-import android.support.v4.widget.ScrollerCompat;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
+import android.widget.OverScroller;
/**
* The {@link Behavior} for a view that sits vertically above scrolling a view.
@@ -35,7 +35,7 @@
private static final int INVALID_POINTER = -1;
private Runnable mFlingRunnable;
- ScrollerCompat mScroller;
+ OverScroller mScroller;
private boolean mIsBeingDragged;
private int mActivePointerId = INVALID_POINTER;
@@ -230,7 +230,7 @@
}
if (mScroller == null) {
- mScroller = ScrollerCompat.create(layout.getContext());
+ mScroller = new OverScroller(layout.getContext());
}
mScroller.fling(
diff --git a/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java b/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java
index 6f4e8ce..fff6b99 100644
--- a/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java
+++ b/v7/appcompat/src/android/support/v7/widget/ActionBarOverlayLayout.java
@@ -32,7 +32,6 @@
import android.support.v4.view.NestedScrollingParent;
import android.support.v4.view.NestedScrollingParentHelper;
import android.support.v4.view.ViewCompat;
-import android.support.v4.widget.ScrollerCompat;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.appcompat.R;
import android.support.v7.view.menu.MenuPresenter;
@@ -43,6 +42,7 @@
import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
import android.view.Window;
+import android.widget.OverScroller;
/**
* Special layout for the containing of an overlay action bar (and its content) to correctly handle
@@ -87,7 +87,7 @@
private final int ACTION_BAR_ANIMATE_DELAY = 600; // ms
- private ScrollerCompat mFlingEstimator;
+ private OverScroller mFlingEstimator;
ViewPropertyAnimator mCurrentActionBarTopAnimator;
@@ -150,7 +150,7 @@
mIgnoreWindowContentOverlay = context.getApplicationInfo().targetSdkVersion <
Build.VERSION_CODES.KITKAT;
- mFlingEstimator = ScrollerCompat.create(context);
+ mFlingEstimator = new OverScroller(context);
}
@Override