ScrollFeedbackProviderCompat


public class ScrollFeedbackProviderCompat


Compat to access ScrollFeedbackProvider across different build versions.

Summary

Public methods

static @NonNull ScrollFeedbackProviderCompat

Creates an instance of ScrollFeedbackProviderCompat.

void
onScrollLimit(int inputDeviceId, int source, int axis, boolean isStart)

Call this when the view has reached the scroll limit.

void
onScrollProgress(
    int inputDeviceId,
    int source,
    int axis,
    int deltaInPixels
)

Call this when the view has scrolled.

void
onSnapToItem(int inputDeviceId, int source, int axis)

Call this when the view has snapped to an item.

Public methods

createProvider

public static @NonNull ScrollFeedbackProviderCompat createProvider(@NonNull View view)

Creates an instance of ScrollFeedbackProviderCompat.

onScrollLimit

public void onScrollLimit(int inputDeviceId, int source, int axis, boolean isStart)

Call this when the view has reached the scroll limit.

Note that a feedback may not be provided on every call to this method. This interface, for instance, may provide feedback on every `N`th scroll limit event. For the interface to properly provide feedback when needed, call this method for each scroll limit event that you want to be accounted to scroll limit feedback.

Parameters
int inputDeviceId

the ID of the InputDevice that caused scrolling to hit limit.

int source

the input source of the motion that caused scrolling to hit the limit.

int axis

the axis of event that caused scrolling to hit the limit.

boolean isStart

true if scrolling hit limit at the start of the scrolling list, and false if the scrolling hit limit at the end of the scrolling list. start and end in this context are not geometrical references. Instead, they refer to the start and end of a scrolling experience. As such, "start" for some views may be at the bottom of a scrolling list, while it may be at the top of scrolling list for others.

onScrollProgress

public void onScrollProgress(
    int inputDeviceId,
    int source,
    int axis,
    int deltaInPixels
)

Call this when the view has scrolled.

Different axes have different ways to map their raw axis values to pixels for scrolling. When calling this method, use the scroll values in pixels by which the view was scrolled; do not use the raw axis values. That is, use whatever value is passed to one of View's scrolling methods (example: scrollBy). For example, for vertical scrolling on AXIS_SCROLL, convert the raw axis value to the equivalent pixels by using getScaledVerticalScrollFactor, and use that value for this method call.

Note that a feedback may not be provided on every call to this method. This interface, for instance, may provide feedback for every `x` pixels scrolled. For the interface to properly track scroll progress and provide feedback when needed, call this method for each scroll event that you want to be accounted to scroll feedback.

Parameters
int inputDeviceId

the ID of the InputDevice that caused scroll progress.

int source

the input source of the motion that caused scroll progress.

int axis

the axis of event that caused scroll progress.

int deltaInPixels

the amount of scroll progress, in pixels.

onSnapToItem

public void onSnapToItem(int inputDeviceId, int source, int axis)

Call this when the view has snapped to an item.

Parameters
int inputDeviceId

the ID of the InputDevice that generated the motion triggering the snap.

int source

the input source of the motion causing the snap.

int axis

the axis of event that caused the item to snap.