public static abstract class ViewDragHelper.Callback
extends Object
java.lang.Object | |
↳ | android.support.v4.widget.ViewDragHelper.Callback |
Callback被用作ViewDragHelper的沟通渠道,使用它回到父视图。 on*
方法在siginficant事件上被调用,并且预计若干访问器方法将根据请求向ViewDragHelper提供有关父视图状态的更多信息。 这个回调也会影响子视图的范围和可拖动性。
Public constructors |
|
---|---|
ViewDragHelper.Callback() |
Public methods |
|
---|---|
int |
clampViewPositionHorizontal(View child, int left, int dx) 限制沿水平轴拖动的子视图的运动。 |
int |
clampViewPositionVertical(View child, int top, int dy) 沿垂直轴限制拖动的子视图的运动。 |
int |
getOrderedChildIndex(int index) 被调用来确定子视图的Z顺序。 |
int |
getViewHorizontalDragRange(View child) 以像素为单位返回可拖动子视图水平移动范围的大小。 |
int |
getViewVerticalDragRange(View child) 以像素为单位返回可拖动的子视图垂直移动范围的大小。 |
void |
onEdgeDragStarted(int edgeFlags, int pointerId) 当用户从父视图中的一个订阅边开始有意拖动而当前没有捕获子视图时调用。 |
boolean |
onEdgeLock(int edgeFlags) 当给定的边缘可能被锁定时调用。 |
void |
onEdgeTouched(int edgeFlags, int pointerId) 当父视图中的某个订阅边缘已被用户触摸而当前未捕获子视图时调用。 |
void |
onViewCaptured(View capturedChild, int activePointerId) 当捕获子视图用于拖动或安置时调用。 |
void |
onViewDragStateChanged(int state) 拖动状态改变时调用。 |
void |
onViewPositionChanged(View changedView, int left, int top, int dx, int dy) 当捕获视图的位置因拖动或解决而改变时调用。 |
void |
onViewReleased(View releasedChild, float xvel, float yvel) 当子视图不再被主动拖动时调用。 |
abstract boolean |
tryCaptureView(View child, int pointerId) 当用户的输入指示他们想用pointerId指示的指针捕获给定的子视图时调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
ViewDragHelper.Callback ()
int clampViewPositionHorizontal (View child, int left, int dx)
限制沿水平轴拖动的子视图的运动。 默认实现不允许水平运动; 扩展类必须覆盖此方法并提供所需的夹持。
Parameters | |
---|---|
child |
View : Child view being dragged |
left |
int : Attempted motion along the X axis |
dx |
int : Proposed change in position for left |
Returns | |
---|---|
int |
The new clamped position for left |
int clampViewPositionVertical (View child, int top, int dy)
沿垂直轴限制拖动的子视图的运动。 默认实现不允许垂直运动; 扩展类必须覆盖此方法并提供所需的夹持。
Parameters | |
---|---|
child |
View : Child view being dragged |
top |
int : Attempted motion along the Y axis |
dy |
int : Proposed change in position for top |
Returns | |
---|---|
int |
The new clamped position for top |
int getOrderedChildIndex (int index)
被调用来确定子视图的Z顺序。
Parameters | |
---|---|
index |
int : the ordered position to query for |
Returns | |
---|---|
int |
index of the view that should be ordered at position index |
int getViewHorizontalDragRange (View child)
以像素为单位返回可拖动子视图水平移动范围的大小。 对于无法水平移动的视图,此方法应返回0。
Parameters | |
---|---|
child |
View : Child view to check |
Returns | |
---|---|
int |
range of horizontal motion in pixels |
int getViewVerticalDragRange (View child)
以像素为单位返回可拖动的子视图垂直移动范围的大小。 对于不能垂直移动的视图,此方法应返回0。
Parameters | |
---|---|
child |
View : Child view to check |
Returns | |
---|---|
int |
range of vertical motion in pixels |
void onEdgeDragStarted (int edgeFlags, int pointerId)
当用户从父视图中的一个订阅边开始有意拖动而当前没有捕获子视图时调用。
Parameters | |
---|---|
edgeFlags |
int : A combination of edge flags describing the edge(s) dragged |
pointerId |
int : ID of the pointer touching the described edge(s) |
也可以看看:
boolean onEdgeLock (int edgeFlags)
当给定的边缘可能被锁定时调用。 如果边缘拖动在开始之前被初步拒绝,但在onEdgeTouched(int, int)
被调用之后,可能会发生这种情况。 此方法应返回true以锁定此边缘,或返回false以解除锁定。 默认行为是让边缘解锁。
Parameters | |
---|---|
edgeFlags |
int : A combination of edge flags describing the edge(s) locked |
Returns | |
---|---|
boolean |
true to lock the edge, false to leave it unlocked |
void onEdgeTouched (int edgeFlags, int pointerId)
当父视图中的某个订阅边缘已被用户触摸而当前未捕获子视图时调用。
Parameters | |
---|---|
edgeFlags |
int : A combination of edge flags describing the edge(s) currently touched |
pointerId |
int : ID of the pointer touching the described edge(s) |
也可以看看:
void onViewCaptured (View capturedChild, int activePointerId)
当捕获子视图用于拖动或安置时调用。 提供当前拖动捕获视图的指针的ID。 如果activePointerId被识别为INVALID_POINTER
则捕获是程序化的而不是指针启动的。
Parameters | |
---|---|
capturedChild |
View : Child view that was captured |
activePointerId |
int : Pointer id tracking the child capture |
void onViewDragStateChanged (int state)
拖动状态改变时调用。 有关更多信息,请参见STATE_*
常量。
Parameters | |
---|---|
state |
int : The new drag state |
void onViewPositionChanged (View changedView, int left, int top, int dx, int dy)
当捕获视图的位置因拖动或解决而改变时调用。
Parameters | |
---|---|
changedView |
View : View whose position changed |
left |
int : New X coordinate of the left edge of the view |
top |
int : New Y coordinate of the top edge of the view |
dx |
int : Change in X position from the last call |
dy |
int : Change in Y position from the last call |
void onViewReleased (View releasedChild, float xvel, float yvel)
当子视图不再被主动拖动时调用。 如果相关的话,也提供抛射速度。 速度值可以被限制为系统最小值或最大值。
调用代码可能会决定放弃或以其他方式释放视图以使其置于原位。 它应该使用settleCapturedViewAt(int, int)
或flingCapturedView(int, int, int, int)
。 如果回调调用其中一种方法,则ViewDragHelper将输入STATE_SETTLING
,并且视图捕获将不会完全结束,直到它完全停止。 如果这两个方法在onViewReleased
返回之前都没有被调用,视图将停止并且ViewDragHelper将返回到STATE_IDLE
。
Parameters | |
---|---|
releasedChild |
View : The captured child view now being released |
xvel |
float : X velocity of the pointer as it left the screen in pixels per second. |
yvel |
float : Y velocity of the pointer as it left the screen in pixels per second. |
boolean tryCaptureView (View child, int pointerId)
当用户的输入指示他们想用pointerId指示的指针捕获给定的子视图时调用。 如果允许用户使用指示的指针拖动给定的视图,回调应该返回true。
即使视图已被捕获,ViewDragHelper也可能多次为同一视图调用此方法; 这表明一个新的指针试图控制视图。
如果此方法返回true,则在捕获成功 onViewCaptured(android.view.View, int)
调用 onViewCaptured(android.view.View, int)
。
Parameters | |
---|---|
child |
View : Child the user is attempting to capture |
pointerId |
int : ID of the pointer attempting the capture |
Returns | |
---|---|
boolean |
true if capture should be allowed, false otherwise |