CoordinatorLayout页面折叠控件

简介

CoordinatorLayout是一种嵌套滑动控件,结合AppbarLayout, CollapsingToolbarLayout等 可 产生各种炫酷的折叠悬浮效果。
本文参考文章
CoordinatorLayout 学习(一) - CoordinatorLayout的基本使用

使用

  • 作为最上层的View
  • 作为一个 容器与一个或者多个子View进行交互

AppBarLayout

如果我们想要实现折叠的ActionBar效果,在CoordinatorLayout中,AppBarLayout绝对是作为首选的控件。

在正式介绍AppBarLayout的使用时,我们先来看看几个Flag,这几个Flag在AppBarLayout里面非常的重要。

名称 作用
SCROLL_FLAG_NO_SCROLL 0x0 设置这个flag,将表示该View不能被滑动。也就是说不参与联动。
SCROLL_FLAG_SCROLL 0x01 设置这个Flag,表示该View参与联动。具体效果需要跟其他Flag组合。
SCROLL_FLAG_EXIT_UNTIL_COLLAPSED 0x02 设置这个Flag,表示当View被推出屏幕时,会跟着滑动,直到折叠到View的最小高度;同时只有在其他View(比如说RecyclerView)滑动到顶部才会展开。
SCROLL_FLAG_ENTER_ALWAYS 0x02 设置这个Flag,不管是View是滑出屏幕还是滑进屏幕,该View都能立即响应滑动事件,跟随滑动。比如说,如果该View是折叠的,当RecyclerView向下滑动时,该View随时都能跟随展开;反之亦然。
SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED 0x04 在SCROLL_FLAG_ENTER_ALWAYS的基础上,该Flag增加了折叠到固定高度的限制。在View下拉过程中,首先会将该View显示minHeight的高度,RecyclerView在继续下拉(这里以RecyclerView为例)。注意,该Flag在SCROLL_FLAG_ENTER_ALWAYS前提下生效。
SCROLL_FLAG_SNAP 0x08 该Flag表示View拥有吸附功能。比如说,当前滑动停止,View离底部更近,那么就会折叠;反之则会展开。
示例

布局文件




    
        
        
    

    

注意事项

AppBarLayout里面放了两个View,其中一个设置scrollFlags,一个没有设置。没有设置的是不会折叠的。
在这里,AppBarLayout并没有设置Behavior,而RecyclerView却设置了的。我统一的解释一下,在CoordinatorLayout内部,理论上每个View必须携带一个Behavior,而这里AppBarLayout没有携带是因为它本身就有,所以不需要申明(在后面,我们会看到几种设置Behavior的方式,这里买一个关子。)

显示效果


CollapsingToolbarLayout

CollapsingToolbarLayout主要是实现折叠布局的,我们来看看是怎么使用的。首先,我们来看看CollapsingToolbarLayout的几个Flag:

名称 作用
COLLAPSE_MODE_OFF 0 默认值,表示View不会有任何属性
COLLAPSE_MODE_PIN 1 当CollapsingToolbarLayout完全收缩之后,设置该Flag的View会保留在屏幕当中。
COLLAPSE_MODE_PARALLAX 2 设置该Flag的View会跟内容滚动,可以通过setParallaxMultiplier方法来设置视图差比率,其中0表示毫无视图差,完全跟内容滚动同步;1表示View完全不动。默认的视图差为0.5。
示例


    

        

            

            
        
    

    

使用CollapsingToolbarLayout时,我们需要注意的是:CollapsingToolbarLayout需要作为AppBarLayout子View。然后我们来看看相关的效果:

总结

  1. 使用AppBarLayout时,我们需要注意4种flag的不同点。
  2. CollapsingToolbarLayout需要作为AppBarLayout的子View才会有效,同时还需要注意它的3种flag。

你可能感兴趣的:(CoordinatorLayout页面折叠控件)