publicinterfaceNestedScrollingChild{ voidsetNestedScrollingEnabled(boolean enabled); booleanisNestedScrollingEnabled(); booleanstartNestedScroll(@ScrollAxisint axes); voidstopNestedScroll(); booleanhasNestedScrollingParent(); booleandispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, @Nullableint[] offsetInWindow); booleandispatchNestedPreScroll(int dx, int dy, @Nullableint[] consumed, @Nullableint[] offsetInWindow) ...... }
NestedScrollingParent(省略了Fling相关的方法):
1 2 3 4 5 6 7 8 9
publicinterfaceNestedScrollingParent{ booleanonStartNestedScroll(@NonNull View child, @NonNull View target, @ScrollAxisint axes); voidonNestedScrollAccepted(@NonNull View child, @NonNull View target, @ScrollAxisint axes); voidonStopNestedScroll(@NonNullView target); voidonNestedScroll(@NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed); voidonNestedPreScroll(@NonNull View target, int dx, int dy, @NonNullint[] consumed); ...... intgetNestedScrollAxes(); }
第二版接口相比于第一版,主要区别是,其中一些方法添加了一个滑动类型参数(触摸、惯性滑动)
NestedScrollingChild2:
1 2 3 4 5 6 7
publicinterfaceNestedScrollingChild2extendsNestedScrollingChild{ booleanstartNestedScroll(@ScrollAxisint axes, @NestedScrollTypeint type); voidstopNestedScroll(@NestedScrollTypeint type); booleanhasNestedScrollingParent(@NestedScrollTypeint type); booleandispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, @Nullableint[] offsetInWindow, @NestedScrollTypeint type); booleandispatchNestedPreScroll(int dx, int dy, @Nullableint[] consumed, @Nullableint[] offsetInWindow, @NestedScrollTypeint type); }
NestedScrollingParent2:
1 2 3 4 5 6 7
publicinterfaceNestedScrollingParent2extendsNestedScrollingParent{ booleanonStartNestedScroll(@NonNull View child, @NonNull View target, @ScrollAxisint axes, @NestedScrollTypeint type); voidonNestedScrollAccepted(@NonNull View child, @NonNull View target, @ScrollAxisint axes, @NestedScrollTypeint type); voidonStopNestedScroll(@NonNullView target, @NestedScrollTypeint type); voidonNestedScroll(@NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, @NestedScrollTypeint type); voidonNestedPreScroll(@NonNull View target, int dx, int dy, @NonNullint[] consumed, @NestedScrollTypeint type); }
第三版接口再一次添加了一个记录已消耗的滑动距离的参数
NestedScrollingChild3:
1 2 3
publicinterfaceNestedScrollingChild3extendsNestedScrollingChild2{ voiddispatchNestedScroll(int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, @Nullableint[] offsetInWindow, @NestedScrollTypeint type, @NonNullint[] consumed); }
NestedScrollingParent3:
1 2 3
publicinterfaceNestedScrollingParent3extendsNestedScrollingParent2{ voidonNestedScroll(@NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, @NestedScrollTypeint type, @NonNullint[] consumed); }