FileDocCategorySizeDatePackage
ScrollerCompat.javaAPI DocAndroid 5.1 API18303Thu Mar 12 22:22:56 GMT 2015android.support.v4.widget

ScrollerCompat

public class ScrollerCompat extends Object
Provides access to new {@link android.widget.Scroller Scroller} APIs when available.

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.

Fields Summary
private static final String
TAG
Object
mScroller
ScrollerCompatImpl
mImpl
static final int
CHASE_FRAME_TIME
Constructors Summary
ScrollerCompat(android.content.Context context, android.view.animation.Interpolator interpolator)

        this(Build.VERSION.SDK_INT, context, interpolator);

    
private ScrollerCompat(int apiVersion, android.content.Context context, android.view.animation.Interpolator interpolator)
Private constructer where API version can be provided. Useful for unit testing.

        if (apiVersion >= 14) { // ICS
            mImpl = new ScrollerCompatImplIcs();
        } else if (apiVersion>= 9) { // Gingerbread
            mImpl = new ScrollerCompatImplGingerbread();
        } else {
            mImpl = new ScrollerCompatImplBase();
        }
        mScroller = mImpl.createScroller(context, interpolator);
    
Methods Summary
public voidabortAnimation()
Stops the animation. Aborting the animation causes the scroller to move to the final x and y position.

        mImpl.abortAnimation(mScroller);
    
public booleancomputeScrollOffset()
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.

        return mImpl.computeScrollOffset(mScroller);
    
public static android.support.v4.widget.ScrollerCompatcreate(android.content.Context context)

        return create(context, null);
    
public static android.support.v4.widget.ScrollerCompatcreate(android.content.Context context, android.view.animation.Interpolator interpolator)

        return new ScrollerCompat(context, interpolator);
    
public voidfling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)
Start scrolling based on a fling gesture. The distance travelled will depend on the initial velocity of the fling.

param
startX Starting point of the scroll (X)
param
startY Starting point of the scroll (Y)
param
velocityX Initial velocity of the fling (X) measured in pixels per second.
param
velocityY Initial velocity of the fling (Y) measured in pixels per second
param
minX Minimum X value. The scroller will not scroll past this point.
param
maxX Maximum X value. The scroller will not scroll past this point.
param
minY Minimum Y value. The scroller will not scroll past this point.
param
maxY Maximum Y value. The scroller will not scroll past this point.

        mImpl.fling(mScroller, startX, startY, velocityX, velocityY, minX, maxX, minY, maxY);
    
public voidfling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY, int overX, int overY)
Start scrolling based on a fling gesture. The distance travelled will depend on the initial velocity of the fling.

param
startX Starting point of the scroll (X)
param
startY Starting point of the scroll (Y)
param
velocityX Initial velocity of the fling (X) measured in pixels per second.
param
velocityY Initial velocity of the fling (Y) measured in pixels per second
param
minX Minimum X value. The scroller will not scroll past this point.
param
maxX Maximum X value. The scroller will not scroll past this point.
param
minY Minimum Y value. The scroller will not scroll past this point.
param
maxY Maximum Y value. The scroller will not scroll past this point.
param
overX Overfling range. If > 0, horizontal overfling in either direction will be possible.
param
overY Overfling range. If > 0, vertical overfling in either direction will be possible.

        mImpl.fling(mScroller, startX, startY, velocityX, velocityY,
                minX, maxX, minY, maxY, overX, overY);
    
public floatgetCurrVelocity()
Returns the current velocity on platform versions that support it.

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}.

return
The original velocity less the deceleration. Result may be negative.

        return mImpl.getCurrVelocity(mScroller);
    
public intgetCurrX()
Returns the current X offset in the scroll.

return
The new X offset as an absolute distance from the origin.

        return mImpl.getCurrX(mScroller);
    
public intgetCurrY()
Returns the current Y offset in the scroll.

return
The new Y offset as an absolute distance from the origin.

        return mImpl.getCurrY(mScroller);
    
public intgetFinalX()

return
The final X position for the scroll in progress, if known.

        return mImpl.getFinalX(mScroller);
    
public intgetFinalY()

return
The final Y position for the scroll in progress, if known.

        return mImpl.getFinalY(mScroller);
    
public booleanisFinished()
Returns whether the scroller has finished scrolling.

return
True if the scroller has finished scrolling, false otherwise.

        return mImpl.isFinished(mScroller);
    
public booleanisOverScrolled()
Returns whether the current Scroller is currently returning to a valid position. Valid bounds were provided by the {@link #fling(int, int, int, int, int, int, int, int, int, int)} method. One should check this value before calling {@link #startScroll(int, int, int, int)} as the interpolation currently in progress to restore a valid position will then be stopped. The caller has to take into account the fact that the started scroll will start from an overscrolled position.

return
true when the current position is overscrolled and in the process of interpolating back to a valid value.

        return mImpl.isOverScrolled(mScroller);
    
public voidnotifyHorizontalEdgeReached(int startX, int finalX, int overX)
Notify the scroller that we've reached a horizontal boundary. Normally the information to handle this will already be known when the animation is started, such as in a call to one of the fling functions. However there are cases where this cannot be known in advance. This function will transition the current motion and animate from startX to finalX as appropriate.

param
startX Starting/current X position
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.

        mImpl.notifyHorizontalEdgeReached(mScroller, startX, finalX, overX);
    
public voidnotifyVerticalEdgeReached(int startY, int finalY, int overY)
Notify the scroller that we've reached a vertical boundary. Normally the information to handle this will already be known when the animation is started, such as in a call to one of the fling functions. However there are cases where this cannot be known in advance. This function will animate a parabolic motion from startY to finalY.

param
startY Starting/current Y position
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.

        mImpl.notifyVerticalEdgeReached(mScroller, startY, finalY, overY);
    
public voidstartScroll(int startX, int startY, int dx, int dy)
Start scrolling by providing a starting point and the distance to travel. The scroll will use the default value of 250 milliseconds for the duration.

param
startX Starting horizontal scroll offset in pixels. Positive numbers will scroll the content to the left.
param
startY Starting vertical scroll offset in pixels. Positive numbers will scroll the content up.
param
dx Horizontal distance to travel. Positive numbers will scroll the content to the left.
param
dy Vertical distance to travel. Positive numbers will scroll the content up.

        mImpl.startScroll(mScroller, startX, startY, dx, dy);
    
public voidstartScroll(int startX, int startY, int dx, int dy, int duration)
Start scrolling by providing a starting point and the distance to travel.

param
startX Starting horizontal scroll offset in pixels. Positive numbers will scroll the content to the left.
param
startY Starting vertical scroll offset in pixels. Positive numbers will scroll the content up.
param
dx Horizontal distance to travel. Positive numbers will scroll the content to the left.
param
dy Vertical distance to travel. Positive numbers will scroll the content up.
param
duration Duration of the scroll in milliseconds.

        mImpl.startScroll(mScroller, startX, startY, dx, dy, duration);