android Behavior

认识Behavior

使用CoordinatorLayout时,会在xml文件中用它作为根布局,并给相应的子View添加一个类似app:layout_behavior="@string/appbar_scrolling_view_behavior"的属性,当然属性值也可以是其它的。进一步可以发现@string/appbar_scrolling_view_behavior的值是android.support.design.widget.AppBarLayout$ScrollingViewBehavior,不就是support包下一个类的路径嘛!玄机就在这里,通过CoordinatorLayout之所以可以实现炫酷的交互效果,Behavior功不可没。既然如此,我们也可以自定义Behavior,来定制我们想要的效果。

自定义Behavior可以选择重写以下的几个方法有:

  1. onInterceptTouchEvent():是否拦截触摸事件
  2. onTouchEvent():处理触摸事件
  3. layoutDependsOn():确定使用BehaviorView要依赖的View的类型
  4. onDependentViewChanged():当被依赖的View状态改变时回调
  5. onDependentViewRemoved():当被依赖的View移除时回调
  6. onMeasureChild():测量使用BehaviorView尺寸
  7. onLayoutChild():确定使用BehaviorView位置
  8. onStartNestedScroll():嵌套滑动开始(ACTION_DOWN),确定Behavior是否要监听此次事件
  9. onStopNestedScroll():嵌套滑动结束(ACTION_UPACTION_CANCEL
  10. onNestedScroll():嵌套滑动进行中,要监听的子 View的滑动事件已经被消费
  11. onNestedPreScroll():嵌套滑动进行中,要监听的子 View将要滑动,滑动事件即将被消费(但最终被谁消费,可以通过代码控制)
  12. onNestedFling():要监听的子 View在快速滑动中
  13. onNestedPreFling():要监听的子View即将快速滑动

当你在onStartNestedScroll()中返回了true之后,嵌套滚动进入两个阶段:
onNestedPreScroll() 会在scrolling View获得滚动事件前调用,它允许你消费部分或者全部的事件信息。
onNestedScroll() 会在scrolling View做完滚动后调用,通过回调可以知道scrolling view滚动了多少和它没有消耗的滚动事件。

你可能感兴趣的:(android Behavior)