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