added in version 22.1.0
belongs to Maven artifact com.android.support:support-compat:28.0.0-alpha1

AutoScrollHelper

public abstract class AutoScrollHelper
extends Object implements View.OnTouchListener

java.lang.Object
   ↳ android.support.v4.widget.AutoScrollHelper
Known Direct Subclasses


AutoScrollHelper is a utility class for adding automatic edge-triggered scrolling to Views.

Note: Implementing classes are responsible for overriding the scrollTargetBy(int, int), canTargetScrollHorizontally(int), and canTargetScrollVertically(int) methods. See ListViewAutoScrollHelper for a ListView -specific implementation.

Activation

Automatic scrolling starts when the user touches within an activation area. By default, activation areas are defined as the top, left, right, and bottom 20% of the host view's total area. Touching within the top activation area scrolls up, left scrolls to the left, and so on.

As the user touches closer to the extreme edge of the activation area, scrolling accelerates up to a maximum velocity. When using the default edge type, EDGE_TYPE_INSIDE_EXTEND, moving outside of the view bounds will scroll at the maximum velocity.

The following activation properties may be configured:

Scrolling

When automatic scrolling is active, the helper will repeatedly call scrollTargetBy(int, int) to apply new scrolling offsets.

The following scrolling properties may be configured:

  • Acceleration ramp-up duration, see setRampUpDuration(int). Default value is 500 milliseconds.
  • Acceleration ramp-down duration, see setRampDownDuration(int). Default value is 500 milliseconds.
  • Target velocity relative to view size, see setRelativeVelocity(float, float). Default value is 100% per second for both vertical and horizontal.
  • Minimum velocity used to constrain relative velocity, see setMinimumVelocity(float, float). When set, scrolling will accelerate to the larger of either this value or the relative target value. Default value is approximately 5 centimeters or 315 dips per second.
  • Maximum velocity used to constrain relative velocity, see setMaximumVelocity(float, float). Default value is approximately 25 centimeters or 1575 dips per second.

Summary

Constants

int EDGE_TYPE_INSIDE

Edge type that specifies an activation area starting at the view bounds and extending inward.

int EDGE_TYPE_INSIDE_EXTEND

Edge type that specifies an activation area starting at the view bounds and extending inward.

int EDGE_TYPE_OUTSIDE

Edge type that specifies an activation area starting at the view bounds and extending outward.

float NO_MAX

Constant passed to setMaximumEdges(float, float), setMaximumVelocity(float, float), or setMinimumVelocity(float, float).

float NO_MIN

Constant passed to setMaximumEdges(float, float), or setMaximumVelocity(float, float), or setMinimumVelocity(float, float).

float RELATIVE_UNSPECIFIED

Constant passed to setRelativeEdges(float, float) or setRelativeVelocity(float, float).

Public constructors

AutoScrollHelper(View target)

Creates a new helper for scrolling the specified target view.

Public methods

abstract boolean canTargetScrollHorizontally(int direction)

Override this method to return whether the target view can be scrolled horizontally in a certain direction.

abstract boolean canTargetScrollVertically(int direction)

Override this method to return whether the target view can be scrolled vertically in a certain direction.

boolean isEnabled()
boolean isExclusive()

Indicates whether the scroll helper handles touch events exclusively during scrolling.

boolean onTouch(View v, MotionEvent event)

Handles touch events by activating automatic scrolling, adjusting scroll velocity, or stopping.

abstract void scrollTargetBy(int deltaX, int deltaY)

Override this method to scroll the target view by the specified number of pixels.

AutoScrollHelper setActivationDelay(int delayMillis)

Sets the delay after entering an activation edge before activation of auto-scrolling.

AutoScrollHelper setEdgeType(int type)

Sets the activation edge type, one of:

  • EDGE_TYPE_INSIDE for edges that respond to touches inside the bounds of the host view.

AutoScrollHelper setEnabled(boolean enabled)

Sets whether the scroll helper is enabled and should respond to touch events.

AutoScrollHelper setExclusive(boolean exclusive)

Enables or disables exclusive handling of touch events during scrolling.

AutoScrollHelper setMaximumEdges(float horizontalMax, float verticalMax)

Sets the absolute maximum edge size.

AutoScrollHelper setMaximumVelocity(float horizontalMax, float verticalMax)

Sets the absolute maximum scrolling velocity.

AutoScrollHelper setMinimumVelocity(float horizontalMin, float verticalMin)

Sets the absolute minimum scrolling velocity.

AutoScrollHelper setRampDownDuration(int durationMillis)

Sets the amount of time after de-activation of auto-scrolling that is takes to slow to a stop.

AutoScrollHelper setRampUpDuration(int durationMillis)

Sets the amount of time after activation of auto-scrolling that is takes to reach target velocity for the current touch position.

AutoScrollHelper setRelativeEdges(float horizontal, float vertical)

Sets the activation edge size relative to the host view's dimensions.

AutoScrollHelper setRelativeVelocity(float horizontal, float vertical)

Sets the target scrolling velocity relative to the host view's dimensions.

Inherited methods

From class java.lang.Object
From interface android.view.View.OnTouchListener

Constants

EDGE_TYPE_INSIDE

added in version 22.1.0
int EDGE_TYPE_INSIDE

Edge type that specifies an activation area starting at the view bounds and extending inward. Moving outside the view bounds will stop scrolling.

See also:

Constant Value: 0 (0x00000000)

EDGE_TYPE_INSIDE_EXTEND

added in version 22.1.0
int EDGE_TYPE_INSIDE_EXTEND

Edge type that specifies an activation area starting at the view bounds and extending inward. After activation begins, moving outside the view bounds will continue scrolling.

See also:

Constant Value: 1 (0x00000001)

EDGE_TYPE_OUTSIDE

added in version 22.1.0
int EDGE_TYPE_OUTSIDE

Edge type that specifies an activation area starting at the view bounds and extending outward. Moving inside the view bounds will stop scrolling.

See also:

Constant Value: 2 (0x00000002)

NO_MAX

added in version 22.1.0
float NO_MAX

Constant passed to setMaximumEdges(float, float), setMaximumVelocity(float, float), or setMinimumVelocity(float, float). Using this value ensures that the computed relative value is always used without constraining to a particular minimum or maximum value.

Constant Value: 3.4028235E38

NO_MIN

added in version 22.1.0
float NO_MIN

Constant passed to setMaximumEdges(float, float), or setMaximumVelocity(float, float), or setMinimumVelocity(float, float). Using this value ensures that the computed relative value is always used without constraining to a particular minimum or maximum value.

Constant Value: 0.0

RELATIVE_UNSPECIFIED

added in version 22.1.0
float RELATIVE_UNSPECIFIED

Constant passed to setRelativeEdges(float, float) or setRelativeVelocity(float, float). Using this value ensures that the computed relative value is ignored and the absolute maximum value is always used.

Constant Value: 0.0

Public constructors

AutoScrollHelper

added in version 22.1.0
AutoScrollHelper (View target)

Creates a new helper for scrolling the specified target view.

The resulting helper may be configured by chaining setter calls and should be set as a touch listener on the target view.

By default, the helper is disabled and will not respond to touch events until it is enabled using setEnabled(boolean).

Parameters
target View: The view to automatically scroll.

Public methods

canTargetScrollHorizontally

added in version 22.1.0
boolean canTargetScrollHorizontally (int direction)

Override this method to return whether the target view can be scrolled horizontally in a certain direction.

Parameters
direction int: Negative to check scrolling left, positive to check scrolling right.

Returns
boolean true if the target view is able to horizontally scroll in the specified direction.

canTargetScrollVertically

added in version 22.1.0
boolean canTargetScrollVertically (int direction)

Override this method to return whether the target view can be scrolled vertically in a certain direction.

Parameters
direction int: Negative to check scrolling up, positive to check scrolling down.

Returns
boolean true if the target view is able to vertically scroll in the specified direction.

isEnabled

added in version 22.1.0
boolean isEnabled ()

Returns
boolean True if this helper is enabled and responding to touch events.

isExclusive

added in version 22.1.0
boolean isExclusive ()

Indicates whether the scroll helper handles touch events exclusively during scrolling.

Returns
boolean True if exclusive handling of touch events during scrolling is enabled, false otherwise.

onTouch

added in version 22.1.0
boolean onTouch (View v, 
                MotionEvent event)

Handles touch events by activating automatic scrolling, adjusting scroll velocity, or stopping.

If isExclusive() is false, always returns false so that the host view may handle touch events. Otherwise, returns true when automatic scrolling is active and false otherwise.

Parameters
v View

event MotionEvent

Returns
boolean

scrollTargetBy

added in version 22.1.0
void scrollTargetBy (int deltaX, 
                int deltaY)

Override this method to scroll the target view by the specified number of pixels.

Parameters
deltaX int: The number of pixels to scroll by horizontally.

deltaY int: The number of pixels to scroll by vertically.

setActivationDelay

added in version 22.1.0
AutoScrollHelper setActivationDelay (int delayMillis)

Sets the delay after entering an activation edge before activation of auto-scrolling. By default, the activation delay is set to getTapTimeout().

Specifying a delay of zero will start auto-scrolling immediately after the touch position enters an activation edge.

Parameters
delayMillis int: The activation delay in milliseconds.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setEdgeType

added in version 22.1.0
AutoScrollHelper setEdgeType (int type)

Sets the activation edge type, one of:

  • EDGE_TYPE_INSIDE for edges that respond to touches inside the bounds of the host view. If touch moves outside the bounds, scrolling will stop.
  • EDGE_TYPE_INSIDE_EXTEND for inside edges that continued to scroll when touch moves outside the bounds of the host view.
  • EDGE_TYPE_OUTSIDE for edges that only respond to touches that move outside the bounds of the host view.

Parameters
type int: The type of edge to use.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setEnabled

added in version 22.1.0
AutoScrollHelper setEnabled (boolean enabled)

Sets whether the scroll helper is enabled and should respond to touch events.

Parameters
enabled boolean: Whether the scroll helper is enabled.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setExclusive

added in version 22.1.0
AutoScrollHelper setExclusive (boolean exclusive)

Enables or disables exclusive handling of touch events during scrolling. By default, exclusive handling is disabled and the target view receives all touch events.

When enabled, onTouch(View, MotionEvent) will return true if the helper is currently scrolling and false otherwise.

Parameters
exclusive boolean: True to exclusively handle touch events during scrolling, false to allow the target view to receive all touch events.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setMaximumEdges

added in version 22.1.0
AutoScrollHelper setMaximumEdges (float horizontalMax, 
                float verticalMax)

Sets the absolute maximum edge size.

If relative edge size is not specified, activation edges will always be the maximum edge size. If both relative and maximum edges are specified, the maximum edge will be used to constrain the calculated relative edge size.

Parameters
horizontalMax float: The maximum horizontal edge size in pixels, or NO_MAX to use the unconstrained calculated relative value.

verticalMax float: The maximum vertical edge size in pixels, or NO_MAX to use the unconstrained calculated relative value.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setMaximumVelocity

added in version 22.1.0
AutoScrollHelper setMaximumVelocity (float horizontalMax, 
                float verticalMax)

Sets the absolute maximum scrolling velocity.

If relative velocity is not specified, scrolling will always reach the same maximum velocity. If both relative and maximum velocities are specified, the maximum velocity will be used to clamp the calculated relative velocity.

Parameters
horizontalMax float: The maximum horizontal scrolling velocity, or NO_MAX to leave the relative value unconstrained.

verticalMax float: The maximum vertical scrolling velocity, or NO_MAX to leave the relative value unconstrained.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setMinimumVelocity

added in version 22.1.0
AutoScrollHelper setMinimumVelocity (float horizontalMin, 
                float verticalMin)

Sets the absolute minimum scrolling velocity.

If both relative and minimum velocities are specified, the minimum velocity will be used to clamp the calculated relative velocity.

Parameters
horizontalMin float: The minimum horizontal scrolling velocity, or NO_MIN to leave the relative value unconstrained.

verticalMin float: The minimum vertical scrolling velocity, or NO_MIN to leave the relative value unconstrained.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setRampDownDuration

added in version 22.1.0
AutoScrollHelper setRampDownDuration (int durationMillis)

Sets the amount of time after de-activation of auto-scrolling that is takes to slow to a stop.

Specifying a duration greater than zero prevents sudden jumps in velocity.

Parameters
durationMillis int: The ramp-down duration in milliseconds.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setRampUpDuration

added in version 22.1.0
AutoScrollHelper setRampUpDuration (int durationMillis)

Sets the amount of time after activation of auto-scrolling that is takes to reach target velocity for the current touch position.

Specifying a duration greater than zero prevents sudden jumps in velocity.

Parameters
durationMillis int: The ramp-up duration in milliseconds.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setRelativeEdges

added in version 22.1.0
AutoScrollHelper setRelativeEdges (float horizontal, 
                float vertical)

Sets the activation edge size relative to the host view's dimensions.

If both relative and maximum edges are specified, the maximum edge will be used to constrain the calculated relative edge size.

Parameters
horizontal float: The horizontal edge size as a fraction of the host view width, or RELATIVE_UNSPECIFIED to always use the maximum value.

vertical float: The vertical edge size as a fraction of the host view height, or RELATIVE_UNSPECIFIED to always use the maximum value.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.

setRelativeVelocity

added in version 22.1.0
AutoScrollHelper setRelativeVelocity (float horizontal, 
                float vertical)

Sets the target scrolling velocity relative to the host view's dimensions.

If both relative and maximum velocities are specified, the maximum velocity will be used to clamp the calculated relative velocity.

Parameters
horizontal float: The target horizontal velocity as a fraction of the host view width per second, or RELATIVE_UNSPECIFIED to ignore.

vertical float: The target vertical velocity as a fraction of the host view height per second, or RELATIVE_UNSPECIFIED to ignore.

Returns
AutoScrollHelper The scroll helper, which may used to chain setter calls.