【Android】Material Toolbar

2017-03-02  本文已影响0人  Wavky

通过 CoordinateLayout + AppBarLayout + CollapsingToolbarLayout 组装成一个符合 Material 动画表现的复合 Toolbar。

结构

<CoordinatorLayout>  // 提供子类相互关联同步运动功能
    <AppBarLayout>      // 组装一个合成的 App bar,并提供基本的同步滚动功能实现
        <CollapsingToolbarLayout> // 提供 Toolbar 专用的 Material 折叠、形变动画
            <Background View />
            <Toolbar 
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize" />
        </CollapsingToolbarLayout>
        <Other part belong to app bar />  // 同步滚动功能对其他�子View 无效
    </AppBarLayout>
    
    <NestedScrollingChild />     // 提供滚动参考数据
    ...
</CoordinatorLayout>

CoordinatorLayout

提供 View 之间的基础联动交互功能

布局方式与 FrameLayout 相同,可协调(关联)内部任意某些 子View(指定app:layout_behavior属性,aka "ChildView")跟随另一个任意特定 View(aka "DependencyView")的尺寸、位置变化或被移除、手势交互等动作时,做相对变化响应(需要自定义Behavior处理器并设置到上面的属性中)。

关于 anchor

子View 可指定任意另一个 CoordinatorLayout 内的子View作为其锚定(anchor)的对象,用于布置浮动跟随型的View,此时 子View 将跟随其 anchor 指定的 anchoredView 移动。
子View 不能锚定自己本身,也不能锚定其 子View(会形成环形依赖)。

属性

Constructor部分,用于本体

LayoutParams部分,用于子元素

Behavior

用于指定当前View(Child)相对于其他View(Dependency)作出自定义响应的逻辑脚本监听响应类


AppBarLayout

提供基础关联滚动实现

LinearLayout 子类容器,用于垂直串联组装一个逻辑上的 AppBar(不限定使用 Toolbar),内部指定了默认Behavior实现,可让(第一个)子View(通过app:layout_scrollFlags属性值指定)跟随外部的 ScrollableView(NestedScrollingChild子类)滚动动作而做特定滚动动作。

通常需要在 NestedScrollingChild(或其父容器)上指定app:layout_behavior="@string/appbar_scrolling_view_behavior",使该 View 在 CoordinatorLayout 中正确布局在 AppBarLayout 下方,并随 AppBarLayout 滚动做相对位移。

属性

Constructor部分,用于本体(仅在 CoordinatorLayout 内生效)

LayoutParams部分,仅用于第一个子元素


CollapsingToolbarLayout

提供 Material 式的关联滚动动画实现(依赖 AppBarLayout)

FrameLayout 子类,用于包裹(层叠) Toolbar 及其 背景View 等部件,(通过指定各种app:属性值)提供符合 Material Design 规范的 Toolbar 及其背景的折叠拉伸、遮罩、视差动画等视觉效果。

需要放置在 AppBarLayout 下作为直接子View使用(可复数并列使用)。

使用方式可参考 玩转AppBarLayout

属性

Constructor部分,用于本体

另外可通过代码独立指定 Title 的颜色、字体、遮罩图像、遮罩及其动画开闭等效果。

LayoutParams部分,用于直接子元素

参考

上一篇下一篇

猜你喜欢

热点阅读