在新的support design中,CoordinatorLayout可以说是最重要的一个控件了,CoordinatorLayout给我们带来了一种新的事件的处理方式——behavior,你是不是还记得我们在使用CoordinatorLayout的时候,一些子view需要一段
app:layout_behavior="@string/appbar_scrolling_view_behavior"
这样的xml配置?当时我们不知道这是干嘛的,直接照用就行了,后来发现这玩意是一个类!而且我们还可以自定义!
认识Behavior
Behavior是CoordinatorLayout的一个抽象内部类
public abstract static class Behavior {
publicBehavior() { }
publicBehavior(Context context, AttributeSet attrs) { }
...}
有一个泛型是指定的我们应用这个Behavior的View的类型,例如上面的appbar_scrolling_view_behavior对应的字符串其实是
android.support.design.widget.AppBarLayout$ScrollingViewBehavior
这个ScrollingViewBehavior内部类指定的泛型是View,所以理论上这个Behavior我们任何的View都可以使用,我们在自定义的时候,如果不是特殊的行为,也可以直接指定泛型View
在自定义Behavior的时候,我们需要关心的两组四个方法,为什么分为两组呢?看一下下面两种情况
某个view监听另一个view的状态变化,例如大小、位置、显示状态等
某个view监听CoordinatorLayout里的滑动状态
对于第一种情况,我们关心的是:
layoutDependsOn
onDependentViewChanged
第二种情况
onNestedPreFling
onNestedPreScroll
onStartNestedScroll