Most visited

Recently visited

NestedScrollingChild

public interface NestedScrollingChild

android.support.v4.view.NestedScrollingChild
Known Indirect Subclasses


该接口应由 View子类实现, View子类希望支持将嵌套滚动操作分派给合作父母 ViewGroup

实现此接口的类应该创建一个 NestedScrollingChildHelper的最终实例作为字段,并将任何View方法委托给相同签名的 NestedScrollingChildHelper方法。

查看调用嵌套滚动功能应该始终从相关这么做ViewCompatViewGroupCompat或者ViewParentCompat兼容性垫片的静态方法。 这确保了与Android 5.0 Lollipop和更新的嵌套滚动视图的互操作性。

Summary

Public methods

abstract boolean dispatchNestedFling(float velocityX, float velocityY, boolean consumed)

向嵌套滚动父级派发一个投掷。

abstract boolean dispatchNestedPreFling(float velocityX, float velocityY)

在此视图处理它之前,将嵌套分派给嵌套的滚动父级。

abstract boolean dispatchNestedPreScroll(int dx, int dy, int[] consumed, int[] offsetInWindow)

在该视图消耗其任何部分之前,调度正在进行的嵌套滚动的一个步骤。

abstract boolean dispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow)

发送正在进行的嵌套滚动的一个步骤。

abstract boolean hasNestedScrollingParent()

如果此视图具有嵌套滚动父级,则返回true。

abstract boolean isNestedScrollingEnabled()

如果对此视图启用嵌套滚动,则返回true。

abstract void setNestedScrollingEnabled(boolean enabled)

启用或禁用此视图的嵌套滚动。

abstract boolean startNestedScroll(int axes)

沿给定轴开始可嵌套滚动操作。

abstract void stopNestedScroll()

停止正在进行的嵌套滚动。

Public methods

dispatchNestedFling

boolean dispatchNestedFling (float velocityX, 
                float velocityY, 
                boolean consumed)

向嵌套滚动父级派发一个投掷。

应该使用此方法来指示嵌套滚动的孩子已经检测到适用于投掷的适当条件。 通常这意味着触摸滚动以velocity的滚动方向结束,沿着可滚动的轴线满足或超过minimum fling velocity

如果嵌套的滚动子视图通常会抛出,但它位于其自己的内容的边缘,则可以使用此方法代替该嵌套的滚动父级。 父母可以有选择地消费一下,或者观察孩子的情绪。

Parameters
velocityX float: Horizontal fling velocity in pixels per second
velocityY float: Vertical fling velocity in pixels per second
consumed boolean: true if the child consumed the fling, false otherwise
Returns
boolean true if the nested scrolling parent consumed or otherwise reacted to the fling

dispatchNestedPreFling

boolean dispatchNestedPreFling (float velocityX, 
                float velocityY)

在此视图处理它之前,将嵌套分派给嵌套的滚动父级。

嵌套的预先掷骰事件是嵌套的掷骰事件,触摸截取是触摸的,嵌套的预滚动是嵌套滚动。 dispatchNestedPreFling在子视图消耗它之前,为嵌套的一排中的父视图偏移一个机会以完全消耗该dispatchNestedPreFling 如果此方法返回true ,则嵌套的父视图消耗了该块,并且该视图不应该作为结果滚动。

为了获得更好的用户体验,嵌套滚动链中只有一个视图应该一次使用这个文件。 如果父视图消耗了这个方法,这个方法将返回false。 自定义视图实现应该以两种方式解决这个问题:

  • If a custom view is paged and needs to settle to a fixed page-point, do not call dispatchNestedPreFling; consume the fling and settle to a valid position regardless.
  • If a nested parent does consume the fling, this view should not scroll at all, even to settle back to a valid idle position.

视图也不应该在当前不支持滚动的坐标轴上为嵌套父视图提供快速速度; ScrollView不应该向其父母提供水平的ScrollView速度,因为不允许沿着该轴进行滚动,并且沿着该运动传送速度没有意义。

Parameters
velocityX float: Horizontal fling velocity in pixels per second
velocityY float: Vertical fling velocity in pixels per second
Returns
boolean true if a nested scrolling parent consumed the fling

dispatchNestedPreScroll

boolean dispatchNestedPreScroll (int dx, 
                int dy, 
                int[] consumed, 
                int[] offsetInWindow)

在该视图消耗其任何部分之前,调度正在进行的嵌套滚动的一个步骤。

嵌套的预滚动事件是嵌套的滚动事件是什么触摸拦截要触摸。 dispatchNestedPreScroll为嵌套滚动操作中的父视图提供了一个机会,以在子视图消耗它之前消耗部分或全部滚动操作。

Parameters
dx int: Horizontal scroll distance in pixels
dy int: Vertical scroll distance in pixels
consumed int: Output. If not null, consumed[0] will contain the consumed component of dx and consumed[1] the consumed dy.
offsetInWindow int: Optional. If not null, on return this will contain the offset in local view coordinates of this view from before this operation to after it completes. View implementations may use this to adjust expected input coordinate tracking.
Returns
boolean true if the parent consumed some or all of the scroll delta

也可以看看:

dispatchNestedScroll

boolean dispatchNestedScroll (int dxConsumed, 
                int dyConsumed, 
                int dxUnconsumed, 
                int dyUnconsumed, 
                int[] offsetInWindow)

发送正在进行的嵌套滚动的一个步骤。

支持嵌套滚动的视图实现应该调用它来报告正在进行的滚动信息到当前嵌套的滚动父项。 如果嵌套滚动当前没有进行,或者对于该视图嵌套滚动不是enabled ,则此方法不执行任何操作。

在使用滚动事件本身的组件之前,兼容的视图实现也应该调用 dispatchNestedPreScroll

Parameters
dxConsumed int: Horizontal distance in pixels consumed by this view during this scroll step
dyConsumed int: Vertical distance in pixels consumed by this view during this scroll step
dxUnconsumed int: Horizontal scroll distance in pixels not consumed by this view
dyUnconsumed int: Horizontal scroll distance in pixels not consumed by this view
offsetInWindow int: Optional. If not null, on return this will contain the offset in local view coordinates of this view from before this operation to after it completes. View implementations may use this to adjust expected input coordinate tracking.
Returns
boolean true if the event was dispatched, false if it could not be dispatched.

也可以看看:

hasNestedScrollingParent

boolean hasNestedScrollingParent ()

如果此视图具有嵌套滚动父级,则返回true。

嵌套滚动父项的存在表示该视图已启动嵌套滚动,并且被视图层次结构的更上层的祖先视图接受。

Returns
boolean whether this view has a nested scrolling parent

isNestedScrollingEnabled

boolean isNestedScrollingEnabled ()

如果对此视图启用嵌套滚动,则返回true。

如果启用了嵌套滚动并且此View类实现支持它,则该视图将在适用时充当嵌套滚动子视图,将有关正在进行的滚动操作的数据转发给兼容且协作的嵌套滚动父级。

Returns
boolean true if nested scrolling is enabled

也可以看看:

setNestedScrollingEnabled

void setNestedScrollingEnabled (boolean enabled)

启用或禁用此视图的嵌套滚动。

如果此属性设置为true,则视图将被允许在当前层次结构中使用兼容父视图启动嵌套滚动操作。 如果这个视图没有实现嵌套滚动,这将不起作用。 嵌套滚动正在进行时禁用嵌套滚动具有stopping嵌套滚动的效果。

Parameters
enabled boolean: true to enable nested scrolling, false to disable

也可以看看:

startNestedScroll

boolean startNestedScroll (int axes)

沿给定轴开始可嵌套滚动操作。

开始嵌套滚动的视图承诺遵守以下合同:

该视图将在启动滚动操作时调用startNestedScroll。 在触摸滚动的情况下,这对应于最初的ACTION_DOWN 在触摸滚动的情况下,嵌套滚动将以与requestDisallowInterceptTouchEvent(boolean)相同的方式自动终止。 在编程滚动的情况下,调用者必须显式调用stopNestedScroll()来指示嵌套滚动的结束。

如果startNestedScroll返回true,则找到合作父项。 如果返回false,则在下一次滚动之前,调用方可能会忽略此合约的其余部分。 当嵌套滚动正在进行时调用startNestedScroll将返回true。

在滚动的每个增量步骤中,调用dispatchNestedPreScroll一旦计算出所请求的滚动增量,应该调用dispatchNestedPreScroll 如果它返回true,则嵌套滚动父级至少部分消耗滚动,并且调用者应该调整它滚动的数量。

在应用滚动增量的剩余部分之后,调用者应调用dispatchNestedScroll ,同时传递消耗的delta和未消耗的delta。 嵌套的滚动父级可能会以不同的方式处理这些值。 onNestedScroll(View, int, int, int, int)

Parameters
axes int: Flags consisting of a combination of SCROLL_AXIS_HORIZONTAL and/or SCROLL_AXIS_VERTICAL.
Returns
boolean true if a cooperative parent was found and nested scrolling has been enabled for the current gesture.

也可以看看:

stopNestedScroll

void stopNestedScroll ()

停止正在进行的嵌套滚动。

当嵌套滚动当前不在进行中时调用此方法是无害的。

也可以看看:

Hooray!