首页
学习
活动
专区
圈层
工具
发布

DiffUtils让你的RecyclerView如斯顺滑

前言 RecyclerView的出现让我们可以实现更多更复杂的滑动布局,包括不同的布局类型,不同的数据类型。但是,越是复杂的布局,出现卡顿的现象就会越发的明显。...没错,当你不知道它是如何实现的时候,去看源码往往是最直接有效的。...但是今天这个并不是这篇文章的重点,关于RecyclerView的复用和回收网上有很多源码的解析,这里就不一一贴源码解释了,只是做一些简单的介绍。...DiffUtil主要是和RecyclerView或者ListView配合使用,由DiffUtil找出每个item的变化,由RecyclerView。Adapter更新UI。...最关键的代码在这句: diffResult.dispatchUpdatesTo(mUpdateCallback); diffResult会将最小变化量提供给adpter,让其实现局部刷新。

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

    Android:让你明明白白的使用RecyclerView——SnapHelper详解

    特别是列表横向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。...SnapHelper是一个抽象类,官方提供了一个LinearSnapHelper的子类,可以让RecyclerView滚动停止时相应的Item停留中间位置。...而滚动的操作都是由SmoothScroller全权负责,它可以控制Item的滚动速度(刚开始是匀速),并且在滚动到targetSnapView被layout时变换滚动速度(转换成减速),以让滚动效果更加真实...以LinearSnapHelper为例,看它到底怎么实现SnapHelper的三个抽象方法,从而让ItemView滚动居中对齐: calculateDistanceToFinalSnap() @...这是因为当前界面上不同的ItemView位置相差比较大,用snapPosition作参考位置,会使得参考位置加上位置偏移量得到的targetSnapPosition最接近目的坐标位置,从而让后续的坐标对齐调整更加自然

    6.7K40

    Android分享:Android侧滑原来可以这么优雅

    一行代码让页面动起来 //仿iOS的弹性留白效果: //侧滑时表现为弹性留白效果,结束后自动恢复 SmartSwipe.wrap(view) .addConsumer(new SpaceConsumer...一行代码让页面具有弹性 //仿MIUI的弹性拉伸效果: //侧滑时表现为弹性拉伸效果,结束后自动恢复 SmartSwipe.wrap(view) .addConsumer(new StretchConsumer...一行代码添加滑动抽屉 抽屉显示在主view之上,类似于DrawerLayout SmartSwipe.wrap(view) .addConsumer(new DrawerConsumer())...//抽屉效果 //可以设置横向(左右两侧)的抽屉为同一个view //也可以为不同方向分别设置不同的view .setHorizontalDrawerView(menuLayout...能实现所有侧滑效果只存在于理论上,肯定还需要不断地完善,开源出来也是希望能利用开源社区的力量来完善它,让android侧滑更简单!

    1.8K20

    Android5.0和6.0之后新增的控件说明

    任务调度器 JobScheduler Android 5.0 任务服务 JobService Android 5.0 v4 下拉刷新布局 SwipeRefreshLayout Android 5.0 抽屉布局...循环视图 RecyclerView Android 5.0 线性布局管理器 LinearLayoutManager Android 5.0 网格布局管理器 GridLayoutManager Android...使用v4控件唯一需要注意的地方,是布局文件中要引用完整路径的控件名称,如抽屉布局android.support.v4.widget.DrawerLayout、下拉刷新布局android.support.v4...这部分控件数量最多,实现的界面特效最丰富,而且互相之间存在依赖关系,如design库依赖于appcompat-v7库,部分design控件如NavigationView还依赖于recyclerview-v7...Android5.0和6.0之后补充了这么多新控件,自然有部分老控件变过时了,下面就列举部分新旧控件的替代关系: Toolbar:替代ActionBar RecyclerView:替代ListView和

    1.7K20

    《云阅》一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目

    豆瓣电影Top250: 豆瓣高分电影集锦,让你放心找好片~ 书籍(豆瓣) 使用的是豆瓣的搜索API。更多订制内容由于时间原因第一版还未添加,第二版会加上。...抽屉界面 完全仿网易云音乐抽屉界面,包括诸多细节如透明标题栏,背景透明度,水波纹颜色等。 项目主页:展示项目介绍信息,及内容说明,可以分享给你的好友哦。...16、NestedScrollView嵌套RecyclerView的使用。...下面一起来谈谈如何达到以上的效果。 关于ToolBar的布局 看到上图我们了解到一个ToolBar上有三种点击效果.. 这就有点尴尬了..不急,我们慢慢来分析。...感谢代码家、张鸿洋、drakeet、yang747046912、GiitSmile、forezp等众多开发者贡献的开源项目,让我从中学到了很多!

    1.6K10

    Anroid Wear OS 手表应用开发 - UI

    navigation_drawer.addOnItemSelectedListener { pos -> // TODO 切换页面 } 复制代码 这里面的 controller.peekDrawer() 是让导航栏在顶部露出一小部分...操作抽屉栏 当需要对当前页面进行一些操作的时候,但页面里又没有空间再放按钮了怎么办?既然可以从顶部下拉出导航栏,要不在底部上拉出一个操作栏?...会在底部露出一小部分操作栏,如果当前页面是一个列表,这一部分会在列表滑动时隐藏,在列表到顶部和底部时显示: 露出部分默认会显示操作栏第一项的图标,可以在布局中添加 app:showOverflowInPeek="true",让它显示竖直三个点的省略图标...它包裹了抽屉栏的主视图 drawer_content 和关闭时露出部分的视图 peek_view。...WearableRecyclerView 继承自 RecyclerView,所以基本用法都是一样的。

    3.2K30

    设计师才是最会搞恶作剧的人

    “用手抓住了水”的套指杯 没有把手的玻璃杯很容易从手中滑落吧,中国台湾设计师烧制的这款套指杯让您牢牢地“捏”住杯身,当杯中灌满有色液体时,会给人以“用手抓住了水”的错觉。...这款由日本100%公司推出的双头灯泡,就是秉持这种精神做出来的产品,故意设计成使用时会让人有灯泡飘在半空中的错觉。 虽然谜底揭晓之后会觉得「这么简单,谁都可以做嘛!」...Poster 板报灯 壁灯 Poster 看起来就是拿张 A2 大小的白纸,开两刀推挤出一个空间,白纸内侧再塞颗灯泡,用胶带或钉子钉在墙上,就成了最简便的纸雕灯具。...Hole In The Floor书柜 这抽屉设计很有趣,就像直接插入地面,感觉抽屉是从地面拉出来,又好像地面上有个洞,从而使抽屉倾斜着沉入地面。...这个设计名为“Hole In The Floor”,实际定义为书柜,经典的抽屉外形,不仅有拉手,还有滑槽。

    776110
    领券