在新的support design中,CoordinatorLayout可以說是最重要的一個控件了,CoordinatorLayout給我們帶來了一種新的事件的處理方式——behavior船庇,你是不是還記得我們在使用CoordinatorLayout的時候,一些子view需要一段
app:layout_behavior="@string/appbar_scrolling_view_behavior"
這樣的xml配置杠茬?當時我們不知道這是干嘛的苏研,直接照用就行了,后來發(fā)現(xiàn)這玩意是一個類欲诺!而且我們還可以自定義抄谐!
認識Behavior
Behavior是CoordinatorLayout的一個抽象內(nèi)部類
public abstract static class Behavior {
? ? publicBehavior() {? ? ? }
? ? publicBehavior(Context context, AttributeSet attrs) {? ? ? }? ? ?
...}
有一個泛型是指定的我們應用這個Behavior的View的類型,例如上面的appbar_scrolling_view_behavior對應的字符串其實是
android.support.design.widget.AppBarLayout$ScrollingViewBehavior
這個ScrollingViewBehavior內(nèi)部類指定的泛型是View扰法,所以理論上這個Behavior我們?nèi)魏蔚腣iew都可以使用蛹含,我們在自定義的時候,如果不是特殊的行為塞颁,也可以直接指定泛型View
在自定義Behavior的時候浦箱,我們需要關心的兩組四個方法,為什么分為兩組呢祠锣?看一下下面兩種情況
某個view監(jiān)聽另一個view的狀態(tài)變化酷窥,例如大小、位置伴网、顯示狀態(tài)等
某個view監(jiān)聽CoordinatorLayout里的滑動狀態(tài)
對于第一種情況蓬推,我們關心的是:
layoutDependsOn
onDependentViewChanged
第二種情況
onNestedPreFling
onNestedPreScroll
onStartNestedScroll