美文网首页
关于AppBarLayout的flag的理解

关于AppBarLayout的flag的理解

作者: 卢小白啊 | 来源:发表于2019-07-16 17:21 被阅读0次

1 scroll

1.1 注意点

  • 这个标志位是其他四个标志位生效的前提,也就是说,其他四个标志位使用时,必须是 scroll|其他flag

  • 带此标志位的View必须放到AppBarLayout的第一个位置,若不是第一个位置,滑动时是不会产生标志位相应的作用的

1.2 使用效果

  • 设置了scroll的View在滚动后收起或打开
  • 当手指向上滑动时,会优先收起AppBarLayout中flag为scroll的View,然后在滑动列表内容(如RecyclerVIew)
  • 当手指向下滑动是,会先滑动列表内容(如RecyclerView),当列表内容内容滑动到顶部时,然后再展开AppBarLayout中flag为scroll的View

2 exitUntilCollapsed

对于可收起的子View来说有两种状态:Enter和Collapsed。手指向上移动的时候,会优先收起AppBarLayout中的子View,而收起的最小高度为0,假如希望它在收起时仍然保留部分可见,那么就需要使用exitUntilCollapsed + minHeight属性,minHeight就决定了收起时的最小高度是多少,也就是Collapsed状态。

  • 当手指向上滑动时,会优先收起AppBarLayout中flag为scroll的View,收起到还保留minHeight可见的位置停下,然后在滑动列表内容(如RecyclerVIew)

  • 当手指像下滑动时,会先滑动列表内容(如RecyclerView),当列表内容内容滑动到顶部时,然后再展开AppBarLayout中flag为scroll | exitUntilCollapsed 的View

也就是说,exitUntilCollapsed的效果与scroll类似,若不设置minHeight,或minHeight为0,效果和scroll完全一样。若设置了minHeight,View中始终有minHeight高度的内容是可见的。

3 enterAlways

  • 手指 向下滑动时,效果和scroll是一样的
  • 手指向上滑动时,效果和scroll是不一样的,会先收起来flag为enterAlways的View,然后才滑动列表

4 enterAlwaysCollapsed

enterAlwaysCollapsed,enterAlways以及minHeight属性一起配合使用,采用这个标志位,主要是为了使得手指向下移动时出现下面这个效果:

  • 优先滚动AppBarLayout中的子View,但是并不是滚动到全部展开,而是只滚动到minHeight
  • AppBarLayout中的子View滚动到minHeight之后,开始滚动列表,直到列表滚动到头部
  • 列表滚动到头部之后,开始滚动AppBarLayout中的子View,直到它完全展开

5 snap

默认情况下,在手指从屏幕上抬起之后,AppBarLayout中子View的状态就不会变化了,而如果我们设置了snap标志位,那么在手指抬起之后,会根据子View当前的偏移量,决定是让它变为收起还是展开状态。

6 flag总结

在区分这些flag之前,我们先描述几个状态,这样会比较方便理解各个flag的意义

  • enter: 表示的是view进入到页面可视区域,也就是向下滑动
  • exit : 表示view退出页面可视区域,也就是向上滑动
  • collapsed : 类似于enter和exit的中间状态,把View挂到半路。

那么

exitUntilCollapsed表示的就是退出可视区域时会在minHeight出停下
enterAlwaysCollapsed表示的就是进入可视区域时会在minHeight处停下。
enterAlways表示的就是进入可视区域时,会优先滑动设置了此flag的view

相关文章

网友评论

      本文标题:关于AppBarLayout的flag的理解

      本文链接:https://www.haomeiwen.com/subject/wowtlctx.html