這裏接着第一篇基礎,本篇主要將如何自定義Behavior
如果還沒看過基礎篇,可以先看上一篇地址:
http://blog.csdn.net/qq_24641847/article/details/78235966
如果要實現如高德地圖或者餓了麼相關界面效果,必須要自定Behavior
自定義Behavior第一步繼承
CoordinatorLayout.Behavior<V extends View>
參數V表示你要定義的View,就是你給那個View定義Behavior屬性,就給哪個View
定義了Behavior,下邊就是綁定對應的View目前有兩種綁定方式,第一種是在xml中配置
app:layout_behavior=""
這裏是class的完整路徑如果你看過系統定義
app:layout_behavior="@string/appbar_scrolling_view_behavior"
看源碼,其實是這樣
<string name="appbar_scrolling_view_behavior" translatable="false">android.support.design.widget.AppBarLayout$ScrollingViewBehavior</string>
其實這個字符串就是ScrollingViewBehavior的這個Behavior的完整路徑
第二種綁定Behavior的方法就是在View中綁定像這樣註解
@CoordinatorLayout.DefaultBehavior(你的Behavior的class)
定義完這些,那個自定Behavior就完成了,此時還是不會有任何作用的,要想起作用,就需要做一些事情
首頁是要綁定View
“`ruby
app:layout_anchor=””
““
這個屬性的意思就是我跟誰關聯,這裏綁定對應的ViewId
主要是重寫父類的這個兩個方法
public boolean onDependentViewChanged(CoordinatorLayout parent, V child, View dependency)
layoutDependsOn方法可以判斷child和dependency的關係,true表示關聯,false表示不關聯
onDependentViewChanged就是在關聯的View改變的時候搞事情
每次綁定的View改變,都會回調layoutDependsOn和onDependentViewChanged方法
比如:當關聯的View移動的時候回調,我們就可以控制我們自己也跟隨移動;在比如如果關聯的View消失的時候,我們頁跟着消失,都是在這樣操作