CoordinatorLayout高级用法-自定义Behavior

在新的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

待续...

你可能感兴趣的:(CoordinatorLayout高级用法-自定义Behavior)