Coordinaorlayout --協(xié)調者布局,適用于打造折疊懸浮效果。
1.簡介
CoordinatorLayout遵循Material 風格,包含在 support Library中,結合AppbarLayout, CollapsingToolbarLayout等可產生各種炫酷的折疊懸浮效果。
作為最上層的View
作為一個容器與一個或者多個子View進行交互
2.AppBarLayout
它是繼承與LinearLayout的,默認的方向是Vertical
我們可以通過兩種?方法設置這個Flag
方法一
setScrollFlags(int)
方法二
app:layout_scrollFlags="scroll|enterAlways"
AppBarLayout必須作為CoordinatorLayout的直接子View,否則它的大部分功能將不會生效,如layout_scrollFlags等。
3.CollapsingToolbarLayout
簡單來說?,CollapsingToolbarLayout是工具欄的包裝器,它通常作為AppBarLayout的孩子。主要實現(xiàn)以下功能?
- Collapsing title(可以折疊 的 標題 )?
- Content scrim(內容裝飾),當我們滑動的位置 到達一定閾值的時候,內容裝飾將會被顯示或者隱藏?
- Status bar scrim(狀態(tài)欄布)?
- Parallax scrolling children,滑動的時候孩子呈現(xiàn)視覺特差效果?
- Pinned position children,固定位置的孩子
我們有兩種方法可以設置這個常量,
方法一:在代碼中使用這個方法
setCollapseMode(int collapseMode)
方法二:在布局文件中使用自定義屬性
app:layout_collapseMode="pin"
4. 自定義 Behavior
自定義 Behavior 需要繼承自 CoodinatorLayout.Behavior
(1) 事件攔截
onInterceptTouchEvent
onTouchEvent
觸摸事件總是先交給 CoodinatorLayout,它會詢問所有子 View 的 Behavior 是否需要攔截事件。
直接拖拽 AppBarLayout 也可以滾動,這是因為 AppBarLayout.Behavior 的父類 HeaderBehavior 實現(xiàn)了這兩個方法。
(2) 嵌套滾動
onNestedPreScroll
onNestedPreFling
(3) child 和 dependency
layoutDependsOn:決定 child 依賴誰(dependency)。
onDependentViewChanged:dependency 的大小或位置發(fā)生了變化。
onDependentViewRemoved:dependency 從父布局中被移除了。
描述了兩個(或多個)View 之間的依賴關系,表現(xiàn)為一個或多個 child 依賴 dependency。當 dependency 的大小或位置發(fā)生了改變,child 可以做出一些你需要的響應(改變位置、大小等)。