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

ViewDragHelper

public class ViewDragHelper
extends Object

java.lang.Object
   ↳ android.support.v4.widget.ViewDragHelper


ViewDragHelper is a utility class for writing custom ViewGroups. It offers a number of useful operations and state tracking for allowing a user to drag and reposition views within their parent ViewGroup.

Summary

Nested classes

class ViewDragHelper.Callback

A Callback is used as a communication channel with the ViewDragHelper back to the parent view using it. 

Constants

int DIRECTION_ALL

Indicates that a check should occur along all axes

int DIRECTION_HORIZONTAL

Indicates that a check should occur along the horizontal axis

int DIRECTION_VERTICAL

Indicates that a check should occur along the vertical axis

int EDGE_ALL

Edge flag set indicating all edges should be affected.

int EDGE_BOTTOM

Edge flag indicating that the bottom edge should be affected.

int EDGE_LEFT

Edge flag indicating that the left edge should be affected.

int EDGE_RIGHT

Edge flag indicating that the right edge should be affected.

int EDGE_TOP

Edge flag indicating that the top edge should be affected.

int INVALID_POINTER

A null/invalid pointer ID.

int STATE_DRAGGING

A view is currently being dragged.

int STATE_IDLE

A view is not currently being dragged or animating as a result of a fling/snap.

int STATE_SETTLING

A view is currently settling into place as a result of a fling or predefined non-interactive motion.

Public methods

void abort()

cancel(), but also abort all motion in progress and snap to the end of any animation.

void cancel()

The result of a call to this method is equivalent to processTouchEvent(android.view.MotionEvent) receiving an ACTION_CANCEL event.

void captureChildView(View childView, int activePointerId)

Capture a specific child view for dragging within the parent.

boolean checkTouchSlop(int directions, int pointerId)

Check if the specified pointer tracked in the current gesture has crossed the required slop threshold.

boolean checkTouchSlop(int directions)

Check if any pointer tracked in the current gesture has crossed the required slop threshold.

boolean continueSettling(boolean deferCallbacks)

Move the captured settling view by the appropriate amount for the current time.

static ViewDragHelper create(ViewGroup forParent, float sensitivity, ViewDragHelper.Callback cb)

Factory method to create a new ViewDragHelper.

static ViewDragHelper create(ViewGroup forParent, ViewDragHelper.Callback cb)

Factory method to create a new ViewDragHelper.

View findTopChildUnder(int x, int y)

Find the topmost child under the given point within the parent view's coordinate system.

void flingCapturedView(int minLeft, int minTop, int maxLeft, int maxTop)

Settle the captured view based on standard free-moving fling behavior.

int getActivePointerId()
View getCapturedView()
int getEdgeSize()

Return the size of an edge.

float getMinVelocity()

Return the currently configured minimum velocity.

int getTouchSlop()
int getViewDragState()

Retrieve the current drag state of this helper.

boolean isCapturedViewUnder(int x, int y)

Determine if the currently captured view is under the given point in the parent view's coordinate system.

boolean isEdgeTouched(int edges)

Check if any of the edges specified were initially touched in the currently active gesture.

boolean isEdgeTouched(int edges, int pointerId)

Check if any of the edges specified were initially touched by the pointer with the specified ID.

boolean isPointerDown(int pointerId)

Check if the given pointer ID represents a pointer that is currently down (to the best of the ViewDragHelper's knowledge).

boolean isViewUnder(View view, int x, int y)

Determine if the supplied view is under the given point in the parent view's coordinate system.

void processTouchEvent(MotionEvent ev)

Process a touch event received by the parent view.

void setEdgeTrackingEnabled(int edgeFlags)

Enable edge tracking for the selected edges of the parent view.

void setMinVelocity(float minVel)

Set the minimum velocity that will be detected as having a magnitude greater than zero in pixels per second.

boolean settleCapturedViewAt(int finalLeft, int finalTop)

Settle the captured view at the given (left, top) position.

boolean shouldInterceptTouchEvent(MotionEvent ev)

Check if this event as provided to the parent view's onInterceptTouchEvent should cause the parent to intercept the touch event stream.

boolean smoothSlideViewTo(View child, int finalLeft, int finalTop)

Animate the view child to the given (left, top) position.

Protected methods

boolean canScroll(View v, boolean checkV, int dx, int dy, int x, int y)

Tests scrollability within child views of v given a delta of dx.

Inherited methods

From class java.lang.Object

Constants

DIRECTION_ALL

added in version 22.1.0
int DIRECTION_ALL

Indicates that a check should occur along all axes

Constant Value: 3 (0x00000003)

DIRECTION_HORIZONTAL

added in version 22.1.0
int DIRECTION_HORIZONTAL

Indicates that a check should occur along the horizontal axis

Constant Value: 1 (0x00000001)

DIRECTION_VERTICAL

added in version 22.1.0
int DIRECTION_VERTICAL

Indicates that a check should occur along the vertical axis

Constant Value: 2 (0x00000002)

EDGE_ALL

added in version 22.1.0
int EDGE_ALL

Edge flag set indicating all edges should be affected.

Constant Value: 15 (0x0000000f)

EDGE_BOTTOM

added in version 22.1.0
int EDGE_BOTTOM

Edge flag indicating that the bottom edge should be affected.

Constant Value: 8 (0x00000008)

EDGE_LEFT

added in version 22.1.0
int EDGE_LEFT

Edge flag indicating that the left edge should be affected.

Constant Value: 1 (0x00000001)

EDGE_RIGHT

added in version 22.1.0
int EDGE_RIGHT

Edge flag indicating that the right edge should be affected.

Constant Value: 2 (0x00000002)

EDGE_TOP

added in version 22.1.0
int EDGE_TOP

Edge flag indicating that the top edge should be affected.

Constant Value: 4 (0x00000004)

INVALID_POINTER

added in version 22.1.0
int INVALID_POINTER

A null/invalid pointer ID.

Constant Value: -1 (0xffffffff)

STATE_DRAGGING

added in version 22.1.0
int STATE_DRAGGING

A view is currently being dragged. The position is currently changing as a result of user input or simulated user input.

Constant Value: 1 (0x00000001)

STATE_IDLE

added in version 22.1.0
int STATE_IDLE

A view is not currently being dragged or animating as a result of a fling/snap.

Constant Value: 0 (0x00000000)

STATE_SETTLING

added in version 22.1.0
int STATE_SETTLING

A view is currently settling into place as a result of a fling or predefined non-interactive motion.

Constant Value: 2 (0x00000002)

Public methods

abort

added in version 22.1.0
void abort ()

cancel(), but also abort all motion in progress and snap to the end of any animation.

cancel

added in version 22.1.0
void cancel ()

The result of a call to this method is equivalent to processTouchEvent(android.view.MotionEvent) receiving an ACTION_CANCEL event.

captureChildView

added in version 22.1.0
void captureChildView (View childView, 
                int activePointerId)

Capture a specific child view for dragging within the parent. The callback will be notified but tryCaptureView(android.view.View, int) will not be asked permission to capture this view.

Parameters
childView View: Child view to capture

activePointerId int: ID of the pointer that is dragging the captured child view

checkTouchSlop

added in version 22.1.0
boolean checkTouchSlop (int directions, 
                int pointerId)

Check if the specified pointer tracked in the current gesture has crossed the required slop threshold.

This depends on internal state populated by shouldInterceptTouchEvent(android.view.MotionEvent) or processTouchEvent(android.view.MotionEvent). You should only rely on the results of this method after all currently available touch data has been provided to one of these two methods.

Parameters
directions int: Combination of direction flags, see DIRECTION_HORIZONTAL, DIRECTION_VERTICAL, DIRECTION_ALL

pointerId int: ID of the pointer to slop check as specified by MotionEvent

Returns
boolean true if the slop threshold has been crossed, false otherwise

checkTouchSlop

added in version 22.1.0
boolean checkTouchSlop (int directions)

Check if any pointer tracked in the current gesture has crossed the required slop threshold.

This depends on internal state populated by shouldInterceptTouchEvent(android.view.MotionEvent) or processTouchEvent(android.view.MotionEvent). You should only rely on the results of this method after all currently available touch data has been provided to one of these two methods.

Parameters
directions int: Combination of direction flags, see DIRECTION_HORIZONTAL, DIRECTION_VERTICAL, DIRECTION_ALL

Returns
boolean true if the slop threshold has been crossed, false otherwise

continueSettling

added in version 22.1.0
boolean continueSettling (boolean deferCallbacks)

Move the captured settling view by the appropriate amount for the current time. If continueSettling returns true, the caller should call it again on the next frame to continue.

Parameters
deferCallbacks boolean: true if state callbacks should be deferred via posted message. Set this to true if you are calling this method from computeScroll() or similar methods invoked as part of layout or drawing.

Returns
boolean true if settle is still in progress

create

added in version 22.1.0
ViewDragHelper create (ViewGroup forParent, 
                float sensitivity, 
                ViewDragHelper.Callback cb)

Factory method to create a new ViewDragHelper.

Parameters
forParent ViewGroup: Parent view to monitor

sensitivity float: Multiplier for how sensitive the helper should be about detecting the start of a drag. Larger values are more sensitive. 1.0f is normal.

cb ViewDragHelper.Callback: Callback to provide information and receive events

Returns