Android APIs
public class

Scroller

extends Object
java.lang.Object
   ↳ android.widget.Scroller

Class Overview

This class encapsulates scrolling. You can use scrollers (Scroller or OverScroller) to collect the data you need to produce a scrolling animation—for example, in response to a fling gesture. Scrollers track scroll offsets for you over time, but they don't automatically apply those positions to your view. It's your responsibility to get and apply new coordinates at a rate that will make the scrolling animation look smooth.

Here is a simple example:

 private Scroller mScroller = new Scroller(context);
 ...
 public void zoomIn() {
     // Revert any animation currently in progress
     mScroller.forceFinished(true);
     // Start scrolling by providing a starting point and
     // the distance to travel
     mScroller.startScroll(0, 0, 100, 0);
     // Invalidate to request a redraw
     invalidate();
 }

To track the changing positions of the x/y coordinates, use computeScrollOffset(). The method returns a boolean to indicate whether the scroller is finished. If it isn't, it means that a fling or programmatic pan operation is still in progress. You can use this method to find the current offsets of the x and y coordinates, for example:

if (mScroller.computeScrollOffset()) {
     // Get current x and y positions
     int currX = mScroller.getCurrX();
     int currY = mScroller.getCurrY();
    ...
 }

Summary

Public Constructors
Scroller(Context context)
Create a Scroller with the default duration and interpolator.
Scroller(Context context, Interpolator interpolator)
Create a Scroller with the specified interpolator.
Scroller(Context context, Interpolator interpolator, boolean flywheel)
Create a Scroller with the specified interpolator.
Public Methods
void abortAnimation()
Stops the animation.
boolean computeScrollOffset()
Call this when you want to know the new location.
void extendDuration(int extend)
Extend the scroll animation.
void fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)
Start scrolling based on a fling gesture.
final void forceFinished(boolean finished)
Force the finished field to a particular value.
float getCurrVelocity()
Returns the current velocity.
final int getCurrX()
Returns the current X offset in the scroll.
final int getCurrY()
Returns the current Y offset in the scroll.
final int getDuration()
Returns how long the scroll event will take, in milliseconds.
final int getFinalX()
Returns where the scroll will end.
final int getFinalY()
Returns where the scroll will end.
final int getStartX()
Returns the start X offset in the scroll.
final int getStartY()
Returns the start Y offset in the scroll.
final boolean isFinished()
Returns whether the scroller has finished scrolling.
void setFinalX(int newX)
Sets the final position (X) for this scroller.
void setFinalY(int newY)
Sets the final position (Y) for this scroller.
final void setFriction(float friction)
The amount of friction applied to flings.
void startScroll(int startX, int startY, int dx, int dy)
Start scrolling by providing a starting point and the distance to travel.
void startScroll(int startX, int startY, int dx, int dy, int duration)
Start scrolling by providing a starting point, the distance to travel, and the duration of the scroll.
int timePassed()
Returns the time elapsed since the beginning of the scrolling.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public Scroller (Context context)

Added in API level 1

Create a Scroller with the default duration and interpolator.

public Scroller (Context context, Interpolator interpolator)

Added in API level 1

Create a Scroller with the specified interpolator. If the interpolator is null, the default (viscous) interpolator will be used. "Flywheel" behavior will be in effect for apps targeting Honeycomb or newer.

public Scroller (Context context, Interpolator interpolator, boolean flywheel)

Added in API level 11

Create a Scroller with the specified interpolator. If the interpolator is null, the default (viscous) interpolator will be used. Specify whether or not to support progressive "flywheel" behavior in flinging.

Public Methods

public void abortAnimation ()

Added in API level 1

Stops the animation. Contrary to forceFinished(boolean), aborting the animating cause the scroller to move to the final x and y position

public boolean computeScrollOffset ()

Added in API level 1

Call this when you want to know the new location. If it returns true, the animation is not yet finished.

public void extendDuration (int extend)

Added in API level 1

Extend the scroll animation. This allows a running animation to scroll further and longer, when used with setFinalX(int) or setFinalY(int).

Parameters
extend Additional time to scroll in milliseconds.

public void fling (int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY)

Added in API level 1

Start scrolling based on a fling gesture. The distance travelled will depend on the initial velocity of the fling.

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

public final void forceFinished (boolean finished)

Added in API level 1

Force the finished field to a particular value.

Parameters
finished The new finished value.

public float getCurrVelocity ()

Added in API level 14

Returns the current velocity.

Returns
  • The original velocity less the deceleration. Result may be negative.

public final int getCurrX ()

Added in API level 1

Returns the current X offset in the scroll.

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

public final int getCurrY ()

Added in API level 1

Returns the current Y offset in the scroll.

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

public final int getDuration ()

Added in API level 1

Returns how long the scroll event will take, in milliseconds.

Returns
  • The duration of the scroll in milliseconds.

public final int getFinalX ()

Added in API level 1

Returns where the scroll will end. Valid only for "fling" scrolls.

Returns
  • The final X offset as an absolute distance from the origin.

public final int getFinalY ()

Added in API level 1

Returns where the scroll will end. Valid only for "fling" scrolls.

Returns
  • The final Y offset as an absolute distance from the origin.

public final int getStartX ()

Added in API level 3

Returns the start X offset in the scroll.

Returns
  • The start X offset as an absolute distance from the origin.

public final int getStartY ()

Added in API level 3

Returns the start Y offset in the scroll.

Returns
  • The start Y offset as an absolute distance from the origin.

public final boolean isFinished ()

Added in API level 1

Returns whether the scroller has finished scrolling.

Returns
  • True if the scroller has finished scrolling, false otherwise.

public void setFinalX (int newX)

Added in API level 1

Sets the final position (X) for this scroller.

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

public void setFinalY (int newY)

Added in API level 1

Sets the final position (Y) for this scroller.

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

public final void setFriction (float friction)

Added in API level 11

The amount of friction applied to flings. The default value is getScrollFriction().

Parameters
friction A scalar dimension-less value representing the coefficient of friction.

public void startScroll (int startX, int startY, int dx, int dy)

Added in API level 1

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.

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

public void startScroll (int startX, int startY, int dx, int dy, int duration)

Added in API level 1

Start scrolling by providing a starting point, the distance to travel, and the duration of the scroll.

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

public int timePassed ()

Added in API level 1

Returns the time elapsed since the beginning of the scrolling.

Returns
  • The elapsed time in milliseconds.