一文彻底搞懂CoordinatorLayout 和 AppbarLayout 联动

ConstainLayout CoordinatorLayout AppbarLayout CollapsingToolbarLayout 我擦,有点蒙,稳住,我们能赢。

1. ConstainLayout

约束布局,和后面几个没有任何联系

2.CoordinatorLayout

CoordinatorLayout 是一个 “加强版” FrameLayout, 它主要有两个用途:

  1. 用作应用的顶层布局管理器,也就是作为用户界面中所有 UI 控件的容器;
  2. 用作相互之间具有特定交互行为的 UI 控件的容器,通过为 CoordinatorLayout 的子 View 指定 Behavior, 就可以实现它们之间的交互行为。 Behavior 可以用来实现一系列的交互行为和布局变化,比如说侧滑菜单、可滑动删除的 UI 元素,以及跟随着其他 UI 控件移动的按钮等。
      
    其实总结出来就是 CoordinatorLayout 是一个布局管理器,相当于一个增强版的 FrameLayout,但是它神奇在于可以实现它的子 View 之间的交互行为。

3.AppBarLayout

AppBarLayout 是一个垂直的 LinearLayout,实现了 Material Design 中 App bar 的 Scrolling Gestures 特性。AppBarLayout 的子 View 应该声明想要具有的“滚动行为”,这可以通过 layout_scrollFlags 属性或是 setScrollFlags() 方法来指定。

AppBarLayout 只有作为 CoordinatorLayout 的直接子 View 时才能正常工作,为了让 AppBarLayout 能够知道何时滚动其子 View,我们还应该在 CoordinatorLayout 布局中提供一个可滚动 View,我们称之为 Scrolling View。

Scrolling View 和 AppBarLayout 之间的关联,通过将 Scrolling View 的 Behavior 设为 AppBarLayout.ScrollingViewBehavior 来建立。

AppBarLayout + CoordinatorLayout使用
一文彻底搞懂CoordinatorLayout 和 AppbarLayout 联动_第1张图片
demo1.gif
一文彻底搞懂CoordinatorLayout 和 AppbarLayout 联动_第2张图片
demo1.gif



    

        


    




4.CollapsingToolbarLayout

CollapsingToolbarLayout 通常用来在布局中包裹一个 Toolbar,以实现具有“折叠效果“”的顶部栏。它需要是 AppBarLayout 的直接子 View,这样才能发挥出效果。
CollapsingToolbarLayout包含以下特性:

  • Collasping title(可折叠标题):当布局完全可见时,这个标题比较大;当折叠起来时,标题也会变小。标题的外观可以通过 expandedTextAppearance 和 collapsedTextAppearance 属性来调整。
  • Content scrim(内容纱布):根据 CollapsingToolbarLayout 是否滚动到一个临界点,内容纱布会显示或隐藏。可以通过 setContentScrim(Drawable) 来设置内容纱布。
    Status bar scrim(状态栏纱布):也是根据是否滚动到临界点,来决定是否显示。可以通过 setStatusBarScrim(Drawable) 方法来设置。这个特性只有在 Android 5.0 及其以上版本,我们设置 fitSystemWindows 为 ture 时才能生效。
  • Parallax scrolling children(视差滚动子 View):子 View 可以选择以“视差”的方式来进行滚动。(视觉效果上就是子 View 滚动的比其他 View 稍微慢些)
  • Pinned position children:子 View 可以选择固定在某一位置上。
一文彻底搞懂CoordinatorLayout 和 AppbarLayout 联动_第3张图片
demo2.gif




    
        

            

            
        
    

    



你可能感兴趣的:(一文彻底搞懂CoordinatorLayout 和 AppbarLayout 联动)