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

CoordinatorLayout与滚动的处理

RecyclerView的任意滚动事件都将触发AppBarLayout或者AppBarLayout里面view的改变。...exitUntilCollapsed: 同样顾名思义,这个flag时定义何时退出,当你定义了一个minHeight,这个view将在滚动到达这个最小高度的时候消失。...记住,要把带有scroll flag的view放在前面,这样收回的view才能让正常退出,固定的view继续留在顶部。 此时,你应该注意到我们的Toolbar能够响应滚动事件了。 ?...同时在用户滚动的时候title的高度也随着改变。 ? 为了制造出这种效果,我们添加一个定义了app:layout_collapseMode=”parallax” 属性的ImageView。...当滚动发生的时候,CoordinatorLayout尝试触发那些声明了依赖的子view。

67520

再也不用担心面试官问RecycleView了

所以「完整缓存流程」是: 保存缓存流程: 插入或是删除itemView时,先把屏幕内的ViewHolder保存至AttachedScrap中 滑动屏幕的时候,先消失的itemview保存到CacheView...新出现的position=9数据由于在mRecyclerPool中还是找不到相应type的ViewHolder,所以还是走onCreateViewHolder和onBindViewHolder方法。...后面依次类推,刚消失的两条数据会被放到mCacheViews中,再出现的时候是不会调用onBindViewHolder方法,复用的第三条数据是从mRecyclerPool中取得,就会调用onBindViewHolder...这是因为RecyclerView默认是setNestedScrollingEnabled(true),这个方法的含义是支持嵌套滚动的。...也就是说当它嵌套在NestedScrollView中时,默认随着NestedScrollView滚动滚动,放弃了自己的滚动。所以给我们的感觉就是滞留、卡顿。

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

Material Design 实战 之第四弹 —— 卡片布局

其中, scroll 表示当RecyclerView向上滚动时,Toolbar跟着一起向上滚动并实现隐藏; enterAlways 表示当RecyclerView向下滚动时...,Toolbar跟着一起向下滚动并重新显示; snap 表示当Toolbar还没有完全隐藏或显示时,根据当前滚动的距离,自动选择是隐藏还是显示。...其中, scroll表示当RecyclerView向上滚动时,Toolbar跟着一起向上滚动并实现隐藏; enterAlways表示当RecyclerView向下滚动时,Toolbar跟着一起向下滚动并重新显示...运行程序可见, 随着我们 向上滚动RecyclerViewToolbar消失掉; 向下滚动RecyclerView,Toolbar又会重新出现; 滚动到Toolbar的一半时松开手指,Toolbar...又会根据当前滚动的距离情况,做出消失或者重新出现的反应; 这其实也是MaterialDesign中的一项重要设计思想,因为当用户在向上滚动RecyclerView的时候,其注意力肯定是在RecyclerView

2K10

手把手教你打造RecyclerView滚动特效

总高度(包含不可见部分)与RecyclerView可见部分的高度相差得到;scrollY则随着RecyclerView滚动变化,因此需要对RecyclerView进行滚动事件的监听: recyclerView.addOnScrollListener...的滚动建立了关系;至此,动画与RecyclerView的逻辑关系梳理完毕。...按照实现RecyclerView的套路一步步实现最基本的列表效果,然后将动画与滚动监听的关系放入Adapter中。...需要强调的是:每一个Item都是随着RecyclerView滚动进行变化的,所以每一个Item的ViewHolder中都注册RecyclerView的监听事件来监听RecyclerView的滑动。...当RecyclerView滑动太快时,单位滚动距离内,滚动监听事件的触发频率较低,导致有些Item的动画进度未达到100%便从屏幕中消失,从而存在重新滚动到那个Item时,Item的动画停留在1%~99%

2.4K10

写给初学者的Jetpack Compose教程,Lazy Layout

rememberLazyListState 我们在使用RecyclerView编写滚动列表的时候,除了实现最基础的滚动功能之外,通常还会让程序随着列表的滚动进行一些额外事件的响应。...如随着滚动隐藏和显示某些控件。 如果想要在Lazy Layout中实现类似效果的话,则需要借助rememberLazyListState函数,我们接下来就瞧一瞧具体如何实现。...当A元素滑出了屏幕,Fab按钮也随之消失。 但其实我在上述代码中挖了一个大坑,它是有非常严重的性能问题的。...嵌套滚动 嵌套滚动一直是我最不喜欢做的事情,但是架不住就是有很多朋友问。 RecyclerView是支持嵌套滚动的,但我认为绝大部分的情况下大家应该都用不到它。...到了Compose当中,这下好了,Lazy Layout压根就不支持嵌套滚动,这下直接就把大家的念象给断了。 那么我为什么还要写这个主题呢?

29310

曝光埋点方案:recyclerView中的item曝光逻辑实现

电商app的首页,一般是可滑动列表,当用户上下滑动时,列表中的item可能多次出现在屏幕上。某个item从出现到消失的过程大于某一时间(比如1s),就认为是一次曝光。...每个模块内部又有多个子item,比如:可横向滑动的菜单模块内有两排菜单、聚划算内展示了两个商品。 ? ? 这里先列出实现逻辑。...、SCROLL_STATE_FLINNG 上报时机就对应recyclerView滚动监听的两个方法,onScrollStateChanged、onScrolled。...三、曝光逻辑代码说明 预备知识,view可见性的判断,https://www.jianshu.com/p/30b0ae304518 1、对recyclerView滚动监听 滚动监听的目的:滑动中item...(RecyclerView recyclerView, int newState) { //关注:SCROLL_STATE_IDLE:停止滚动; SCROLL_STATE_DRAGGING

5.2K10

Android仿微信朋友圈点击评论自动定位到相关行功能

这个实现起来其实很简单,咱们就来看看吧 最简单的RecyclerView 依然是先实现RecyclerView。...列表的滚动 输入框也有了,这时候就差滚动了。我们可以通过smoothScrollBy来让RecyclerView按X或者Y轴进行滚动。那我们这里到底应该滚动多少距离才对呢?,咱们来计算一下吧 ?...这样黄色顶部与红色顶部中间的区域高度,就是RecyclerView需要滚动的数值这样就好办了,我们使用getLocationOnScreen去获取差值,再加上评论区域高度就行了 fun showInputComment...但是还有几个小问题,如果是点击最后一行的话,因为滚动空间不足不能实现相同的效果,并且按返回键的时候,键盘先消失,然后再按一次之后Dialog才消失。...总结 以上所述是小编给大家介绍的Android仿微信朋友圈点击评论自动定位到相关行功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编及时回复大家的。

1.5K60

RecyclerView必知必会

为什么会出现RecyclerViewRecyclerView并不会完全替代ListView(这点从ListView没有被标记为@Deprecated可以看出),两者的使用场景不一样。...但是RecyclerView的出现让很多开源项目被废弃,例如横向滚动的ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...animateDisappearance(): 当ViewHolder消失在屏幕上时被调用(可能是remove或move)。...拓展RecyclerView 添加setOnItemClickListener接口 RecyclerView默认没有像ListView一样提供setOnItemClickListener()接口,RecyclerView...ArrayList[] mScrapViews;: 每个Item Type对应一个列表作为回收站,缓存由于滚动消失的View,此处的View如果被复用,以参数的形式传给getView()

4.6K20

已中招!Android 基础面试常常吊死在这几个问题上……

RecyclerView 在显示较长的项目列表。假设我们要显示100行项目。一种简单的方法是只创建100个视图,每行一个视图,然后将它们全部布局。...但这是浪费的,因为在任何时间点上,只有10个左右的项目可以放在屏幕上,而其余项目则不在屏幕上。因此, RecyclerView 只创建屏幕上的10个左右的视图。这样,速度和内存使用率将提高10倍。...创建视图需要花费时间,因此您的滚动很可能不会很流畅。这就是为什么 RecyclerView 利用以下事实:滚动时,新行出现在屏幕上,旧行消失在屏幕上。...ViewHolder模式:Recyclerview实现了ViewHolders模式,但在ListView 中不是必需的。RecyclerView滚动时回收并重用单元格。...在 ListView 中, findViewById() 在滚动 ListView 期间,代码可能频繁调用,这可能降低性能。即使适配器返回膨胀视图以进行回收,仍然需要查找元素并进行更新。

2K20

用 CoordinatorLayout 处理滚动

这个项目是最容易理解 CoordinatorLayout 的方式之一。 设置 首先要确保遵循 Design Support Library 的说明。...Ps:这里所说的 scrolling up 应该指的是 list 的滚动条向上滑动不是上滑的手势。 ? 通常,只有当 list 滑到顶部的时候 Toolbar 才会显示,如下所示: ?...通常,我们设置 Toolbar 的标题。现在,我们需要在 CollapsingToolBarLayout 不是 Toolbar 上设置标题。...还要注意的是 RecyclerView 应该使用 wrap_content 不是 match_parent,这是一个新修改,为的是让底部栏只占用必要的不是全部空间: <CoordinatorLayout...例如,在一个下拉刷新的例子中,这个属性应该放在包含了 RecyclerView 的 SwipeRefreshLayout 中不是第二层以下的后代中。

4.7K92

RecyclerView 必知必会

为什么会出现RecyclerViewRecyclerView并不会完全替代ListView(这点从ListView没有被标记为@Deprecated可以看出),两者的使用场景不一样。...但是RecyclerView的出现让很多开源项目被废弃,例如横向滚动的ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...animateDisappearance(): 当ViewHolder消失在屏幕上时被调用(可能是remove或move)。...拓展RecyclerView 添加setOnItemClickListener接口 RecyclerView默认没有像ListView一样提供setOnItemClickListener()接口,RecyclerView...ArrayList[] mScrapViews;: 每个Item Type对应一个列表作为回收站,缓存由于滚动消失的View,此处的View如果被复用,以参数的形式传给getView()

2.5K70

RecyclerView 必知必会

为什么会出现RecyclerViewRecyclerView并不会完全替代ListView(这点从ListView没有被标记为@Deprecated可以看出),两者的使用场景不一样。...但是RecyclerView的出现让很多开源项目被废弃,例如横向滚动的ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...animateDisappearance(): 当ViewHolder消失在屏幕上时被调用(可能是remove或move)。...拓展RecyclerView 添加setOnItemClickListener接口 RecyclerView默认没有像ListView一样提供setOnItemClickListener()接口,RecyclerView...ArrayList[] mScrapViews;: 每个Item Type对应一个列表作为回收站,缓存由于滚动消失的View,此处的View如果被复用,以参数的形式传给getView()

4.1K90

从0系统学Android--3.6 RecyclerView

3.6.2 实现横向滚动和瀑布流布局 Listview 的可扩展性不好,只能实现纵向滚动,如果想要横向滚动的话 ListView 就做不到了。下面用 RecyclerView 来实现横向滚动。...为什么 ListView 很难实现的效果在 RecyclerView 上这么轻松就实现了呢?...主要原因是RecyclerView 出色的设计,ListView 的布局排列是又自身去管理的, RecyclerView 的布局排列交给了 LayoutManager ,LayoutManager 有一套可扩展布局排列接口...也就是说如你的子项布局的宽度设置了 match_parent 的话,StraggeredGridLayoutManager 自动给它按照比例缩小,不是截取。...那么你会说了,既然 RecyclerView 这个强大了,各个方面都优于 ListView,但是为什么点击事件没有处理好呢?

81720

一个Demo学会用Android兼容包新控件

本例中,TabLayout在界面滚动时,随着Toolbar的逐渐隐藏,将占据Toolbar的位置, 达到节省屏幕空间,界面动画效果的目的。...exitUntilCollapsed: 当视图会在滚动时,它一直滚动到设置的minHeight时完全隐藏。...需要注意的是,后面两种模式基本只有在CollapsingToolbarLayout才有用, 前面两种模式基本是需要一起使用的,也就是说,这些flag的使用场景,基本已经固定了。...-- Tabs选项卡,和ViewPager搭配使用可以增大界面的内容展示量,实现各种个性化分类内容展示不互相干扰!...你会发现多了一个 app:layout_behavior 属性,没错, 如果你使用CoordinatorLayout来实现Toolbar滚动渐变消失动画效果,那就必须在它下面的那个控件中加入这个属性

1.5K40

Floating Action Button-Android M新控件

建议在手机上下方的margin设置为16dp平板上设置为24dp。上面的例子中,使用的是16dp。 根据谷歌的设计规范,drawable的尺寸应该是24dp。 ?...实际上只需要指定一个布局文件,就可以看到效果了,只不过是这时候的FAB是固定在屏幕指定位置的,而无法随之滚动,不着急,下面会介绍如何设置成可滚动的FAB 属性介绍 FAB 默认使用应用主题中设置的浮起色作为按键背景...用RecyclerView替换ListViews 目前,你需要用RecyclerView来替换ListView。就如这节所描述的,RecyclerView是ListView的继承者。...向下移动 FAB消失,向上移动时,FAB出现。 ---- embedding(嵌入)-floatingactionbutton-in-header 效果图 ?...关联起来,这样按钮就会随着list的向下滚动隐藏,向上滚动重现: ListView listView = (ListView) findViewById(android.R.id.list); FloatingActionButton

1.4K40

Android 基于RecyclerView实现的歌词滚动自定义控件

本文介绍了Android 基于RecyclerView实现的歌词滚动自定义控件,分享给大家,具体如下: 先来几张效果图: ? ?...1.对于滚动,我们可以调用 RecyclerView.smoothScrollBy() 方法, 相对于 ScrollBy() 方法,该方法能够实现平滑滑动。 我设置了总共显示九句歌词。...中间线的逻辑是当点击屏幕的时候显示出中间的线,离开屏幕的时候过一小段时间消失。也就是需要处理 down 事件和 up 事件 。...当你要做某个控件或项目的时候,不要着急着动笔。要先想好整个流程和框架。这方面先考虑清楚在动笔写。你的逻辑一定要现在白纸上实现一遍后才开始敲代码。就像我之前做的项目还有这次这个控件,我都比较着急写。...这样你就会被问题牵着走,不能从整体上去看问题。 事情总是一点一点一点地解决。在写代码的过程中,总有我们当时不知道的,不会的,不知道怎么做的。

1.5K10

recycleview的优化_recyclerview原理

从ViewGroup中移除的子view放到Pool缓存池中,如下图中的itemView b。...当调用notifyDataSetChanged()方法时,ViewHolder进入上面的一级缓存mAttachedScrap中,不是进入缓存池pool中,这样的好处:1)不会存在缓存池pool满的问题...这个机制导致一个问题,启动应用之后,在屏幕可见范围内,如果只有一张卡片可见,当滚动的时 候,RecyclerView找不到可以重用的view了,它将创建一个新的,因此在滑动到第二个feed的时候就会有一定的延时...,如果项目中复用RecycledViewPool时,开启该功能更好的实现复用。...(true),是支持嵌套滚动的,也就是说当它嵌套在NestedScrollView中时,默认随着NestedScrollView滚动滚动,放弃了自己的滚动

3.7K20
领券