美文网首页
android Behavior

android Behavior

作者: 小林0504 | 来源:发表于2018-11-26 15:47 被阅读32次

    认识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

          本文链接:https://www.haomeiwen.com/subject/bcdcxqtx.html