CoordinatorLayout示例
CoordinatorLayout
coordinatorLayout(協調佈局)其實就是將其下的所有子View都抽象成: 互相依賴(depends)的關係. 因此某個view可以基於另一個view來定位,
這樣抽象的好處更強大的地方在於:
每一個view的所有屬性, 座標, 樣式, 狀態等一切都可以依賴於另一個view, 因此使得parentView和所有childView之間都可以互相聯動起來.
想象一下, 不僅僅是定位, 所有可以設定在View上面的屬性都可以依賴於另一個view的變化而變化, 某一個View可以跟隨另一個View一起滾動, 某一個View可以跟隨另一個View的狀態改變而改變, 效能非常的強大;
CoordinatorLayout的Behavior
Behavior是Android新出的Design庫裡新增的佈局概念。Behavior只有是CoordinatorLayout的 直接子View 才有意義。可以為任何View新增一個Behavior。
Behavior是一系列回撥。讓你有機會以非侵入的為View新增動態的依賴佈局,和處理父佈局(CoordinatorLayout)滑動手勢的機會。
不過官方只有少數幾個Behavior的例子。並且實現類也很少;預設也只有幾種實現,有的複雜的需求就需要自己去實現自定義的Behavior
先說一下這個屬性 app:layout_scrollFlags
1) scroll:值設為scroll的View會跟隨滾動事件一起發生移動。
2) enterAlways:值設為enterAlways的View,當ScrollView往下滾動時,該View會直接往下滾動。而不用考慮ScrollView是否在滾動。
3) exitUntilCollapsed:值設為exitUntilCollapsed的View,當這個View要往上逐漸“消逝”時,會一直往上滑動,直到剩下的的高度達到它的最小高度後,再響應ScrollView的內部滑動事件。
4) enterAlwaysCollapsed:是enterAlways的附加選項,一般跟enterAlways一起使用,它是指,View在往下“出現”的時候,首先是enterAlways效果,當View的高度達到最小高度時,View就暫時不去往下滾動,直到ScrollView滑動到頂部不再滑動時,View再繼續往下滑動,直到滑到View的頂部結束。
例子
下面就用協調佈局寫幾個常用的例子;
效果1:toolbar隨子view的滾動顯示和隱藏
如下圖:

ee.gif
效果2:結合CollapsingToolbarLayout縮放圖片和toolBar
如下圖:

bb.gif
效果3:類似知乎首頁滑動顯示和影藏的效果;
如下圖:

cc.gif
效果4:viewpager+fragment,滑動漸變改變indicator;
如下圖:

dd.gif
放一下github地址,喜歡麻煩給個star了
ofollow,noindex">github地址