美文网首页
Android-CoordinatorLayout之自定义Beh

Android-CoordinatorLayout之自定义Beh

作者: A代码搬运工 | 来源:发表于2019-06-05 19:47 被阅读0次

    1.自定义Behavior

    自定义Behavior可以重写的方法:

    1.onInterceptTouchEvent() 是否拦截触摸事件

    2.onTouchEvent() 处理触摸事件

    3.layoutDependsOn 确定使用Behavior的View要依赖的Vie的类型

    4.onDependentViewChanged() 当被依赖的View状态改变时回调

    5.onDependentViewRemoved() 当被依赖的View移除时回调

    6.onMeasureChild() 测量使用Behavior的View尺寸

    7.onLayoutChild() 确定使用Behavior的View的位置

    8.onStartNestedScroll() 嵌套滑动开始(ACTION_DOWN),确定Behavior是否监听此次事件

    9.onStopNestedScroll() 嵌套滑动结束(ACTION_UP或者ACTION_CANCEL)

    10.onNestedScroll() 嵌套滑动进行中,要监听子View的滑动事件已经被消费

    11.onNestedPreScroll() 嵌套滑动进行中,要监听子View将要滑动,滑动事件即将被消费(但最终被谁消费,可以通过代码控制)

    12.onNestedFling() 要监听的子View在快速滑动中

    13.onNestedPreFling() 要监听的子View即将快速滑动

    2.代码手动设置Behavior

    CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) mRecyclerView.getLayoutParams();

    lp.setBehavior(new SampleHeaderBehavior());

    3.NestedScrolling机制

    NestedScrolling提供了一套父View和子View嵌套滑动的交互机制,前提条件是父View需要实现NestedScrollingParent接口,子View需要实现NestedScrollingChild接口,按照NestedScrolling|parent|child接口的要求,实现该接口的View需要创建一个NestedScrolling|Parent|ChildHelper帮助类来辅助子类和父View的交互.在NestedScrolling机制中,当实现了NestedScrollChild接口的子View滑动时,先将自己滑动的dx,dy传递给NestedScrollingParent接口的父View,让View先决定是否要消耗相应的事件,父View可以消费全部事件,如果父View消费了部分,剩下的就给子View处理.

    注:

    拦截垂直方向的滚动事件

    @Override

    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) {

      return (nestedScrollAxes & ViewCompat.SCROLL_AXIS_VERTICAL) != 0;

    }

    相关文章

      网友评论

          本文标题:Android-CoordinatorLayout之自定义Beh

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