Android RrecyclerView条目跳转到指定位置
1. 先上效果图,有图有真有真相
2. 相关需求,点击RecyclerView中的某一个条目,让该条目滑动到屏幕中间。
3.RecyclerView各种滚动方法分析
- scrollTo(int x, int y)和scrollBy(int x, int y)这两个方法可以让我们自己去控制滚动距离但是没有滚动效果。
- scrollToPosition(int position)滚动到指定条目,有滚动效果,但是当指定条目显示在屏幕中他就没有下文了,我们不能控制滚动的具体位置
- smoothMoveToPosition(int position)效果同scrollToPosition(int position)
- ((LinearLayoutManager)mLayoutManager).scrollToPositionWithOffset(int position, int offset)滚动到指定条目并且可以设置相对偏移量,但是没有滚动效果
4. 效果分析
- 我这里用到的是上面第四种方法scrollToPositionWithOffset(int position, int offset)。 至于上面提到的没有滚动效果是用的属性动画来给他添加滚动效果的
- 分析图
如图可以看到滚动距离就是该条目在屏幕上的位置,到我们需要滚动到位置。
我们可以讲上面的效果图拆分为下面三个步骤
- 获取条目在屏幕中的位置
- 计算我们需要将条目滑动的位置
- 使用属性动画将条目从当前位置滚动到我们想要他最终停止的位置
部分代码
· 获取条目在屏幕中的位置
int[] outLocation = new int[2];itemLayout.getLocationOnScreen(outLocation);int[] outLocation = new int[2];
//这里减去了状态栏高度,如果是全屏没有状态栏可以不用减int itemLayoutHeight = outLocation[1] - getStatusBarHeight(MainActivity.this);
· 计算需要滚动到的地方,根据自己的需求来
· 使用属性动画
RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();if (layoutManager != null && layoutManager instanceof LinearLayoutManager) {final LinearLayoutManager mLayoutManager = (LinearLayoutManager) layoutManager;if (centreHeight != itemLayoutHeight) {ValueAnimator valueAnimator = ValueAnimator.ofInt(itemLayoutHeight, centreHeight);valueAnimator.setDuration(500);valueAnimator.setInterpolator(new LinearInterpolator());valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {int animatedValue = (int) animation.getAnimatedValue();((LinearLayoutManager) mLayoutManager).scrollToPositionWithOffset(position, animatedValue);}});valueAnimator.start();}}
好了上面是部分代码,我把我自己写的demo贴出来
代码传送门RecyclerViewItemCentreDemp
Android RrecyclerView条目跳转到指定位置相关推荐
- RecyclerView跳转到指定位置,RecyclerView上下滑动监听,RecyclerView滑动速度
1.RecyclerView跳转到指定位置 只需调用recycleview的置顶方法: recyclerView.scrollToPosition(15); 如果你需要让第15item在屏幕居中,只需 ...
- recycleview 使用详解,添加头部尾部,混合item,侧滑菜单,跳转到指定位置,实现九宫格布局
添加头部尾部,混合item:https://blog.csdn.net/meixi_android/article/details/82256319 侧滑菜单:https://blog.csdn.ne ...
- html导航栏页面切换的js,js实现页面滚动切换导航栏/点击导航栏跳转到指定位置...
最近一直在弄页面的事情,对页面方面的知识又巩固了一下.这次的内容如题,大家对代码有疑问或者是有更好的方法欢迎留言! js部分 //标题对象 var title = document.getElemen ...
- 锚点定位 跳转到指定位置 回到顶部功能
一.跳转到指定位置 项目中数据较多,但是要在一个页面展示出来,就会需要定位功能. 例如淘宝中点击某个商品的分类会跳转到对应的模块,模块中是详细的商品信息 数据 arrayList:[{ //不一一列出 ...
- Vue 页面跳转到指定位置
Vue 页面跳转到指定位置 页面跳转 页面 script style 进阶版:随着页面滚动变换导航菜单样式 监听页面滚动方法 销毁滚动 页面跳转 页面 <template><div ...
- js实现页面滚动切换导航栏/点击导航栏跳转到指定位置
最近一直在弄页面的事情,对页面方面的知识又巩固了一下.这次的内容如题,大家对代码有疑问或者是有更好的方法欢迎留言! js部分 //标题对象 var title = document.get ...
- js 跳转到指定位置 高德地图_【高德字符串JavaScript面试题】面试问题:高德地图Js … - 看准网...
申请JSAPI的开发者key 申请地址:http://lbs.amap.com/dev/key 引入高德地图JavaScript API文件: 创建地图容器 在页面body里你想展示地图的地方创建一个 ...
- android动态添加控件在指定位置,Android 如何动态添加 View 并显示在指定位置。
引子 最近,在做产品的需求的时候,遇到 PM 要求在某个按钮上添加一个新手引导动画,引导用户去点击.作为 RD,我哗啦啦的就写好相关逻辑了.自测完成后,提测,PM Review 效果. 看完后,PM ...
- js 跳转到指定位置 高德地图_JS引入高德地图定位
在此记录一下X项目使用高德地图的思路高德地图(X项目前端框架是Jquery) 2准备工作(封装方法,以便直接调用) -2.2封装超时方法($.timeOut-参考) -2.3封装异步调用地图的方法 / ...
最新文章
- 一篇文章,带你读懂人脸识别技术
- C#操作Word完全功略!
- 将新建“Typora File”添加到鼠标右键
- 【机器学习】使用奇异值分解(SVD)构建推荐系统
- linux下僵尸进程(Defunct进程)的产生与避免
- zemax设计35mm镜头_ZEMAX怎样优化MTF?
- php升维,svm算法详解
- Javascript第四章匿名函数第七课
- 0501 0503 模块区别_关于博途STEP7仿真软件究竟与真实PLC有哪些区别?
- 33种名车的标志及名称来历
- 2014十大的安全工具(ToolsWatch.org投票选出)
- app商城开发要多少钱_价格透明_讲讲行业收费套路_OctShop
- git将项目提交到本地创库
- VideoCapture()的使用------python
- CNCC 2018 今日开幕,五场特邀报告引爆「大数据推动数字经济」| CNCC 2018
- websocket 爬虫
- 安装mingw-w64失败解决方法
- 多线程的实际应用场景
- PermGen space 1
- JavaScript+屏幕自适应:时钟(色卡分享+canvas+js)
热门文章
- 计算机应用专业书本推荐,计算机应用基础
- [Unix下C/C++开发] unix编程书籍推荐
- python程序员培训_推荐给未来Python程序员的自学路线,不再背负小白名称
- Android项目从零到上线的全过程
- 最好的网络拓扑制作软件
- 用手机版python爬虫_Python爬虫也能用手机进行抓包?没错!这个技巧我只告诉你...
- Automation Anywhere视频教程
- 火狐使用js下载文件_如何使用Firefox Send安全地将大文件发送给任何人
- 【LaTeX中英排版系列】LaTeX中英双标题、作者、机构、摘要文档首页排版指北
- FastCGI 进程管理器(FPM)