個人理解有限,有不對的地方希望大家指正崇裁。
NestedScrollingParent
一匕坯、包括的方法:
? ? ? ? ?public boolean ?onStartNestedScroll(View child,View target, int nestedScrollAxes);
? ? ? ? ? public void ?onNestedScrollAccepted(View child,View target, int nestedScrollAxes);
? ? ? ? ? public void ?onStopNestedScroll(View target);
? ? ? ? ? public void ?onNestedScroll(View target, int dxConsumed, int dyConsumed,?int dxUnconsumed, int dyUnconsumed);
? ? ? ? ? public void ?onNestedPreScroll(View target, int dx, int dy, int[] consumed);
? ? ? ? ? public boolean ?onNestedFling(View target, float velocityX, float velocityY, boolean consumed);
? ? ? ? ? public boolean ?onNestedPreFling(View target, float velocityX, float velocityY);
? ? ? ? ? public int ?getNestedScrollAxes();
1.對入?yún)?View child的理解:它是實現(xiàn)NestedScrollingParent的父類ViewGroup中最外層實現(xiàn)NestedScrollingChild的子View
2.對fling的理解:就是當滑動控件,手指離開屏幕后拔稳,慣性的滑動
3.dx: 實現(xiàn)NestedScrollingParent的父類橫向滑動的偏移量
4.dy: 實現(xiàn)NestedScrollingParent的父類縱向滑動的偏移量
5.int[] consumed 通知NestedScrollingChild消耗的多少偏移量
6.dxConsumed:target View橫向消耗的偏移量
7.dyConsumed:target View縱向消耗的偏移量
8.dxUnconsumed:target View橫向未消耗的偏移量
9.dyUnconsumed:target View縱向未消耗的偏移量
二葛峻、各方法調(diào)用的時機
1.當滑動屏幕的時候先調(diào)用 onStartNestedScroll();
2.如果onStartNestedScroll()返回true ,接著會調(diào)用 onNestedScrollAccepted();
3.滑動屏幕時巴比,如果最父類布局攔截滑動事件术奖,會調(diào)用onNestedPreScroll()
4.如果targetView開始滑動,會開始調(diào)用onNestedScroll();