首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

细说 AppbarLayout,如何理解可折叠 Toolbar 的定制

当 AppBarLayout 中的内容要从 CoordinatorLayout 外面进入内部时,我们用 enter 指代这种行为,对应的手势就是向下滑动。...当 AppBarLayout 中的内容从 CoordinatorLayout 内部向外部方向移动时,我们用 exit 指代这种行为,对应的手势是向上滑动。...exitUntilCollapsed 前面讲过 当 AppBarLayout 中的内容从 CoordinatorLayout 内部向外部方向移动时,我们用 exit 指代这种行为,对应的手势是向上滑动...也就是说 snap 代表一种吸附的行为,当一个滑动事件结束后,Toolbar 会向最接近它的边缘自行滚动。那什么是最近的概念呢?比如向上滑动时,如果滑过了一半它就向上滚动,否则滚动回原来的地方。...就是滚动的速度不同,造成的视觉差异效果。也就是说 CollapsingToolbarLayout 中有的 view 滚动的快一些,其它的滚动的慢一些。

3.1K30

Android开发笔记(一百三十五)应用栏布局AppBarLayout

对于大家关心的额外功能,则主要有以下几点: 1、支持响应主体页面的滑动行为,即在主体页面上移或者下拉时,AppBarLayout能够捕捉到主体页面的滚动操作; 2、AppBarLayout捕捉到滚动操作之后...,因为design库的动态效果都依赖于该控件; 3、CoordinatorLayout节点要添加命名空间声明xmlns:app="http://schemas.android.com/apk/res-auto...下面是AppBarLayout结合RecyclerView实现的工具栏向上滚动效果截图: ?...> 嵌套滚动视图NestedScrollView 虽说通过AppBarLayout可实现Toolbar的滚动效果,但并非所有可滚动的控件都会触发Toolbar滚动,事实上只有Android5.0之后新增的少数滚动控件才具备该特技...下面是AppBarLayout结合NestedScrollView实现的工具栏向上滚动效果截图: ?

2K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    聊聊Android嵌套滑动

    在嵌套滑动控件的场景中,可以在Android的事件分发机制本身做一些处理,外部拦截或者内部消化触摸事件。...,只要实现了这几个接口,再借助系统提供的这几个 Helper 类,我们就能很轻松的实现嵌套滑动效果。...CoordinatorLayout 在布局上其实和我们常见的 FrameLayout 没有差别,但是它内部实现了嵌套滑动的接口来支持包裹一个可以支持嵌套滑动的Scroll 组件,并且把交互抽象到 Behavior...确定子view是否有其他布局作为依赖项,场景的appbar滚动固定的就会返回true onDependentViewChanged onDependentViewRemoved 看 CoordinatorLayout...= STATE_DRAGGING 就成立了,这时候事件就被 CoordinatorLayout 拦截下来,内部的滑动控件就开始正常滑动。 总结 到这里,Android的嵌套滑动机制就介绍完了。

    1.3K10

    ConstraintLayout2.0一篇写不完之嵌套滚动怎么滚

    在没有ConstraintLayout的时候,要实现嵌套滚动布局,通常都是使用CoordinatorLayout来实现,但是这个东西的使用局限性比较大,能非常简单的实现的嵌套布局,就那么几种,如果要实现一些特别的滚动效果...这种方案的布局结构如下: CoordinatorLayout --------AppBarLayout ----------------MotionLayout --------NestedScrollView...CoordinatorLayout,而仅使用MotionLayout来实现嵌套滚动效果,实现滚动布局的大一统。...,而内部的MotionLayout,则用于控制头部的滚动时效果。...这样一来,整个嵌套滚动的格局一下子就打开了,再也没了之前使用CoordinatorLayout的高度限制,效果限制,所有的内容,都可以通过约束来进行设置,再通过MotionLayout来进行动态约束,从而实现嵌套滚动布局

    1.2K30

    CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar-Android M新控件

    效果图 ? CoordinatorLayout 概述 CoordinatorLayout官方API ?...滚动事件,那么在CoordinatorLayout布局里其它标记了app:layout_behavior的子View(LinearLayout、RecyclerView、NestedScrollView...> 上述布局文件中,ToolBar标记了layout_scrollFlags滚动事件,那么当LinearLayout滚动时便可触发ToolBar中的layout_scrollFlags效果 即往上滑动隐藏...enterAlwaysCollapsed 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度 exitUntilCollapsed...布局下包裹一个可以滑动的布局,比如 RecyclerView,NestedScrollView(经过测试,ListView,ScrollView不支持)具有滑动效果的组件。

    2.2K30

    Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)

    > CoordinatorLayout> 我们知道ScrollView允许使用滚动的方式来查看屏幕以外的数据, 而NestedScrollView...在此基础之上增加了嵌套响应滚动事件的功能。...由于CoordinatorLayout本身已经可以响应滚动事件了, 因此我们在它的内部就需要使用NestedScrollView或RecyclerView这样可以响应滚动事件的布局。...不管是ScrollView还是NestedScroIIView,它们的内部都只允许存在一个直接子布局。...重新运行一下程序,效果如下: ? 向上拖动水果图片,背景图上的标题会慢慢缩小,而且会产生错位偏移的效果,toolbar的位置和图片还会产生透明度的变化等等,效果十分炫酷。 ? ?

    2.3K40

    NestedScrolling机制之CoordinatorLayout.Behavior实战

    ,通过上一讲的内容其实我们已经可以实现很复杂的ui效果了,那个这一讲讲什么呢,就是CoordinatorLayout,CoordinatorLayout.Behavior这个相当于NestedScrolling...waimaidetails.gif 这种效果假如不用CoordinatorLayout其实还是有点难麻烦的,不过有了CoordinatorLayout就简单了,首先我们看一下布局文件: 滚动状态,但是并不是由target消耗的滚动时候触发,这个是水平滚动的实时距离 * dyUnconsumed view处于滚动状态,但是并不是由target消耗的滚动时候触发,这个是竖直滚动的实时距离...回调方法很像,其实说白了CoordinatorLayout内部还是用NestedScrolling机制实现的。...onNestedPreScroll():当我们滑动时候就会不断的调用这个方法,这也是我们实现各种效果的关键,我在这里做的最主要的就是各种滑动动画效果的实现,而效果无非就是放大,缩小,透明度,View的移动等

    89710

    Android 折叠式布局

    嵌套好之后设置一些简单的样式即可 到这一步基本上这个折叠布局已经完成了,然后只要填充相关的控件即可实现效果,要注意的点是Toolbar中放置的是你需要折叠和展开的控件,而AppBarLayout中放置的是...到这里我们就已经实现了这个折叠式,当你点击这个蓝色背景标题往上面滑动时,ImageView就会折叠起来,往下滑动时图片就会展开。...为了使体现更好可以AppBarLayout下面放一个滚动条,不要用ScrollView而是NestedScrollView因为这里你是要联动的。...的总高度就会超过手机屏幕,形成滑动之后图片向上面展示的效果,其实加了NestedScrollView之后,即使里面什么东西都没有,你照样可以滚动,但是如果你用ScrollView就不行,它里面就必须要有东西才行...这个时候再运行一下就有比较好的折叠效果了 ? 最后我再放一下整体的布局页面的代码 <?xml version="1.0" encoding="utf-8"?

    1.4K20

    滑动吸顶效果

    最初想用 CoordinatorLayout 加 RecyclerView,但效果不好直接用,或者用 NestedScrollView 与 RecyclerView 组合使用。...但 NestedScrollView 与 RecyclerView 组合时怎么也不能使 RecyclerView 自己滑动,而 NestedScrollView 不滑动,事件拦截,禁止嵌套滑动,NestedScrollView...实现效果如下: 2019_05_19_16_07_00.gif 要让 CoordinatorLayout 一开始不滑动,然后可以滑动,再然后又不可以滑动,所以想自定义一个控件,重写 onNestedPreScroll...(false) } else { // 要吸顶的位置到了,让外面滚动,此时 appbarLayout.y 从 0 开始慢慢变小, // 变到 -barHeightDistance...然后发现一个问题,向下拉时由于 canScroll 成 false 时,发假的也没用,所以修改 private fun calculate() { // 只要 appbarLayout 在这不上不下的位置

    2.7K10

    Material Design之CollapsingToolbarLayout 相关属性和方法介绍

    enterAlways - 实现quick return效果, 当向下移动时,立即显示View(比如Toolbar)。...exitUntilCollapsed - 向上滚动时收缩View,但可以固定Toolbar一直在上面。...enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。...parallax - 设置为这个模式时,在内容滚动时,CollapsingToolbarLayout中的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常和layout_collapseParallaxMultiplier...当然 里面的toolbar 你们还可以设置其他的属性。 然后里面的NestedScrollView这货。 它和scrollview 基本上一样  但是它支持嵌套滚动  嵌套滚动默认是启用的。

    96730

    CoordinatorLayout打造折叠式的顶部标题栏

    ( Android开发之CoordinatorLayout打造滑动越界弹性放大图片效果有解释 ) AppBarLayout必须是CoordinatorLayout的直接子View,不然他一点作用都发挥不出来...AppBarLayout下方与之并列的滑动控件有比如RecyclerView,NestedScrollView(与AppBarLayout同属于CoordinatorLayout的子View),这些并列的...内部的子View一般都要加上属性:app:layout_collapseMode="",常用值是parallax(视差滚动),pin(固定)。...以下是XML布局代码,注意根布局控件是CoordinatorLayout ,RecyclerView一定要填充数据且充满否则无效果。...> 如果以上简单操作无法满足你的需求,最后附上参考博客文章 Android开发之CoordinatorLayout打造滑动越界弹性放大图片效果 使用CoordinatorLayout打造各种炫酷的效果

    2.1K30

    自定义 Behavior,实现嵌套滑动、平滑切换周月视图的日历

    用 CoordinatorLayout 作为根布局,就可以协调它子控件之间的联动效果,至于如何联动,是由它的内部类 Behavior 实现的。...onNestedPreFling 当 RecyclerView 或 NestedScrollView 滑动时,CoordinatorLayout 的子控件 Behavior 可以接收到对应的回调。...分析一下这个折叠效果。滚动时,日历也向上滚动,最多到当前选中日期那一行,滚动范围和当前选中日期有关。...惯性滑动 上面效果可以看出一个问题,当滑动到一半的时候松手,应该要恢复到完整视图的位置。这里包含了,快速滑动后惯性滑动到指定位置的效果,和没有快速滑动时,往就近的指定位置滑动这两种效果。...由于我们的滚动折叠效果是在 onNestedPreScroll 实现的,所以要想办法触发这个方法。

    3.4K10
    领券