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

小距离上的RecyclerView smoothScrollToPosition太快了

是指在使用RecyclerView的smoothScrollToPosition方法进行滚动时,当滚动距离较小时,滚动速度过快的问题。

为了解决这个问题,可以使用RecyclerView的SmoothScroller类来自定义滚动速度。具体步骤如下:

  1. 创建一个自定义的SmoothScroller类,继承自RecyclerView.SmoothScroller。
  2. 在自定义的SmoothScroller类中,重写calculateSpeedPerPixel方法,该方法用于计算每个像素需要滚动的时间。可以通过调整返回值来控制滚动速度。例如,可以返回一个较大的值来减慢滚动速度。
  3. 在需要滚动的地方,使用自定义的SmoothScroller类来进行滚动。可以通过调用RecyclerView的getLayoutManager方法获取LayoutManager对象,然后调用startSmoothScroll方法来启动滚动。

下面是一个示例代码:

代码语言:txt
复制
public class CustomSmoothScroller extends LinearSmoothScroller {
    private static final float MILLISECONDS_PER_INCH = 100f; // 调整滚动速度的值

    public CustomSmoothScroller(Context context) {
        super(context);
    }

    @Override
    protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) {
        return MILLISECONDS_PER_INCH / displayMetrics.densityDpi;
    }
}

// 在需要滚动的地方使用自定义的SmoothScroller类
RecyclerView.SmoothScroller smoothScroller = new CustomSmoothScroller(context);
smoothScroller.setTargetPosition(position);
recyclerView.getLayoutManager().startSmoothScroll(smoothScroller);

这样就可以通过自定义SmoothScroller类来调整滚动速度,解决小距离上的RecyclerView smoothScrollToPosition太快的问题。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

  • 腾讯云云服务器(CVM):提供可扩展的云服务器,适用于各种规模的应用程序和工作负载。了解更多信息,请访问:腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全、耐用、低成本的对象存储服务,适用于存储和处理任意类型的文件和媒体内容。了解更多信息,请访问:腾讯云对象存储
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

项目需求讨论- 自定义滚轮(第二波新实现)

获取滚动距离: public int getScollYDistance(RecyclerView recyclerView) { LinearLayoutManager layoutManager...---- 滚动后调整距离RecyclerView 滚到特定position位置: 我简单介绍,就只分二种情况来谈下(正好滑到一个标准距离,让Item正好完全显示这种情况我就去除了): 顶部Item...这时候很简单,大家说获取到第一个ItemPosition值,然后调用RecyclerView.smoothScrollToPosition(Position),跳到这个positionItem就可以了么...这时候大家也知道,应该是让当前屏幕内获取到first Item 滚动出界面,所以大家一想就说获取第一个ItemPosition值,然后调用RecyclerView.smoothScrollToPosition...我直接抛弃了RecyclerView.smoothScrollToPosition方法,我们看到了,其实我们是不是可以通过判断,第一个Item有没有滚出一半ItemHeight距离在外面。

1.1K20

android gallery当前view变大,GitHub – hutcwpGalleryViewDemo: 实现画廊效果(中间放大两边缩小)无限循环向左滑向右滑,Viewpager和Recycl

:28.0.0’ 一个是ViewPager所在包,另一个是RecyclerView所在包 RecyclerView实现GalleryView效果可(伪无限)无限左滑右滑 先上效果图 要点: 在有限数据里面...Integer.MAX_VALUE; } Integer.MAX_VALUE,即2147483647(2^32-1),距离真正无限大还是有点差距,不过效果也可以 第一次显示时候实现左滑 只需要在一开始时候...(int position) smoothScrollToPosition(int position) scrollToPositionWithOffset(position,0) smoothScrollToPosition...smoothScrollToPosition是平滑到你想显示项,而scrollToPosition是直接定位显示。...)这个方法是自己去控制移动距离,单位是像素,所以在使用scrollBy(x, y)需要自己去计算移动高度或宽度 如果使用BCsl大BCsl/GalleryLayoutManager自定义 LayoutManager

2.3K20
  • Android自定义控件进阶:自定义LayoutManager

    近期在编身上发生了许多事情,心态也发生了很大改变,有感于现实无奈,在离家乡遥远城市里落寂,追逐名利浮躁;可能生活就是这样,每个年龄段都有自己烦恼。...自定义LayoutManager基础知识 有关自定义LayoutManager基础知识,请查阅以下文章,写非常棒: 1、陈自定义LayoutManager第十一式之飞龙在天(缘大佬自定义文章逻辑清晰明了...方法来确定它位置和尺寸; 其实在自定义LayoutManager中,在流程也是差不多,我们需要重写onLayoutChildren方法,这个方法会在初始化或者Adapter数据集更新时回调,在这方法里面...,就是回收了,我们在layout之后,还要把一些不再需要Items回收,以保证滑动流畅度; 以上内容出自陈自定义LayoutManager第十一式之飞龙在天。...索引值为0view 一次完全滑出屏幕所需要移动距离,定位为 firstChildCompleteScrollLength ;非索引值为0view滑出屏幕所需要移动距离为: firstChildCompleteScrollLength

    2.2K00

    由旋转画廊,看自定义RecyclerView.LayoutManager

    一、简介 前段时间需要一个旋转木马效果用于展示图片,于是第一时间在github找了一圈,找了一个还不错控件,但是使用起来有点麻烦,始终觉得很不爽,所以寻思着自己做一个轮子。...然后,我们判断了滑动距离dx,加上之前已经滚动总偏移量mOffsetAll,是否超出所有Item可以滑动距离(总距离= Item个数 * Item间隔),对滑动距离进行边界处理,并将实际滚动距离累加到...根据滚动距离除以Item间距计算出总共滚动了多少个Item,然后启动居中显示动画。...SCROLL_RIGHT : SCROLL_LEFT); } } @Override public void smoothScrollToPosition(RecyclerView recyclerView...); } } scrollToPosition()用于不带动画Item直接跳转 smoothScrollToPosition()用于带动画Item滑动 也很简单,计算要跳转Item所在位置需要滚动距离

    2.8K51

    Android RecyclerView 滚动到中间位置方法示例

    最近看到QQ音乐歌词每次滑动后都可以滚回到中间位置。觉得甚是神奇,打开开发者模式显示布局,发现歌词部分不是采用 android 控件,应该是前端写。...// 滚动到指定位置 recyclerView.scrollToPosition(position); // 平滑滚动到指定位置 recyclerView.smoothScrollToPosition(...// scrollBy(x, y)这个方法是自己去控制移动距离,单位是像素,所以在使用scrollBy(x, y)需要自己去计算移动高度或宽度。...mRecyclerView.scrollToPosition(0); mRecyclerView.scrollBy(0,400); 先滚动到制定位置,在滚动一段距离不就好了?...debug 调试看了下,还是没有弄懂,实现复杂。 那就是说这样是不行,那有没有其他办法呢?

    2.9K30

    手把手教你用RecyclerView实现猫眼电影选择效果

    一、简介 在官方推出RecyclerView 控件之后,越来越多的人都使用它代替之前ListView。除了最普通列表显示,RecyclerView还可以其他很多效果,例如Banner等。...中,我们如果需要滑动到某一位置,一般会使用RecyclerView.smoothScrollToPosition(idx)方法,但是在此处我们在设置item点击事件时,不能直接使用这个方法,因为这个方法只会将...(idx)调用了LinearLayoutManager.smoothScrollToPosition方法,代码中calculateDtToFit 方法控制滑动位置,其中参数中view为需要滑动可见...然后调用val movieLayoutManager = CenterLayoutManager(this)和 RecyclerView.smoothScrollToPosition(idx)便可以点击滑动到中间...transition进行淡入淡出,这里我们新建一个Map来缓存一张图片背景图片,然后当做下一张图片占位符,便可以实现背景淡入淡出效果。

    1.2K00

    Android 中使用RecyclerView实现底部翻页

    RecyclerView 是Android L版本中新添加一个用来取代ListViewSDK,它灵活性与可替代性比listview更好。...接下来通过一系列文章讲解如何使用RecyclerView,彻底抛弃ListView....最近在做pad端app,需要一个像网页一样效果,之前使用addView方式,页码少时候还可以,能实现效果,但是碰到了一个1000多页界面,就GG了,页码半天显示不出来,于是使用RecyclerView...作为容器,主要是看中RecyclerView复用,不说了,看代码: BottomPagerView xml布局: <?...,操作 } }); 总结 以上所述是编给大家介绍Android 中使用RecyclerView实现底部翻页,希望对大家有所帮助,如果大家有任何疑问请给我留言,编会及时回复大家

    1K10

    Android蹲坑疑难杂症集锦一

    各位看官老爷子你们好,我就是那个挖坑不埋,还喜欢开新矿喵同志。 问大家一个问题,在Github找项目的时候,看到中文简介说明你们是不是觉得这个项目很low不屑一顾?...最近朋友无意中说,在Github看到中文项目点都不想点进去,low了。...想想好像很多大神项目都是纯英语,so,作为只有四级程度同志,我就是那个项目里弥漫着中文家伙(ノQ益Q)ノ彡┻━┻,你们怎么看?我挺喜欢中文?...5、ViewPager嵌套RecyclerView还有轮播图手势冲突,参考:linkagescroll。...8、CardView 慎用,因为在某些低版本机器上会有白带,需要的话可以用shape实现圆角。 9、图片压缩安利。 10、RecyclerView回到顶部优化。

    96130

    在 View 使用挂起函数 | 实战

    本文是探索协程如何简化异步 UI 编程系列第二篇。第一篇侧重理论分析,这一篇我们通过实践来说明如何解决实际问题。如果您希望回顾之前内容,可以在这里找到——《在 View 使用挂起函数》。...这个 ID 映射到了季份列表中某一集; 该集条目可能还没有被添加到 RecyclerView 中,需要用户展开该季份列表,然后将其滑动展示到屏幕,这样我们需要视图才能被 RecyclerView...(position: Int) { recyclerView.smoothScrollToPosition(position) // 增加一个滑动监听器,等待 RV 滑动停止 recyclerView.addOnScrollListener...) // 滑动 RecyclerView 使该季份条目显示在其区域最上方 recyclerView.smoothScrollToPosition(seasonItemPosition...在 TV 节目的例子中,实际处理了几种不同异步状态: // 确保指定季份列表已经展开,目标剧集已经被加载 viewModel.expandSeason(nextEpisodeToWatch.seasonId

    1.4K30

    在 View 使用挂起函数

    最常见用法有以下几项: AnimatorListener 获取动画结束相关事件 RecyclerView.OnScrollListener 获取滑动状态变更事件 View.OnLayoutChangeListener...正是因为 Android UI 编程从根本就是异步,所以造成了如此之多回调。从测量、布局、绘制,到调度插入,整个过程都是异步。...移除该监听 cont.invokeOnCancellation { removeOnLayoutChangeListener(listener) } // 最终,将监听添加到 view ...但是这里使用方法适用于不同类型异步操作: 我们使用一个 ValueAnimator,一个 RecyclerView 平滑滚动,以及一个 Animator 来举例: viewLifecycleOwner.lifecycleScope.launch...smooth scroll recyclerView.run { smoothScrollToPosition(10) // 该方法和其他方法类似,等待当前滑动完成

    2.3K30

    hdu---(4515)Q系列故事——世界最遥远距离(模拟题)

    Q系列故事——世界最遥远距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total...Submission(s): 1751    Accepted Submission(s): 628 Problem Description   世界最遥远距离   不是生与死   而是我就站在你面前...  你却不知道我爱你   世界最遥远距离   不是我就站在你面前你却不知道我爱你   而是明明知道彼此相爱   却不能在一起   世界最遥远距离   不是明明知道彼此相爱却不能在一起   ...HR妈妈并不同意他们交往,当听说Q只是一个码农,特别是听说Q曾经参加过资本主义国家发起SM/ICPC比赛时候,更是坚决反对!   ...其勇气可谓令人赞叹,但可怜Q却总是备受折磨——Q理解”向前穿越”是朝着未来方向,而女友HR理解“向前穿越”却是朝着古代方向!

    55450

    【Android应用开发】RecycleView API 翻译 (文档翻译)

    这两个位置 (Position) 基本是一样, 除了在分发 adapter.notify*  事件 和 计算更新布局时候不一样. ...你可以依赖这些位置, 这些位置与用户当前在屏幕看到位置是一致.例如, 如果你在屏幕上有一个项目列表, 用户要求使用第五个项目元素, 你可以使用这些方法, 因为这些方法对应位置就是用户看到位置....该类定义了条目发生改变时 适配器 动画效果. class RecyclerView.ItemDecoration 项目装饰, 在适配器数据集中指定项目显示组件, 添加一个特别的图画 和 布局....To support smooth scrolling, you must override smoothScrollToPosition(RecyclerView, State, int) and create...Parameters position The adapter position to scroll to See Also smoothScrollToPosition(RecyclerView,

    1.3K40

    Android仿抖音右滑清屏左滑列表功能实现代码

    所以,很明显在Item布局包一层,实现清屏和侧滑列表功能就可以了,这样每个房间都可以上下滑,切换房间。...但是实现过程中还是出现了问题,由于RecyclerView预加载功能,导致我们项目中,从第一个房间滑到下一个房间,过程中会新建两个Holder,这样Fragment替换就出了问题,切换房间后Fragment...,下次滑出时,代码固定到当前位置不是也可以伪造出同一个滑块儿效果嘛,这部分也去找了一些资料,实现了个demo。...其中用到主要方法是 /** * 获取滑动距离 */ fun getScollYDistance(): Int { // 获取recyclerview layoutManager...计算出高度后,每次加载时,调用RecyclerViewAPI recyclerView.scrollBy(0,scroll) //scroll 刚才计算高度 还有其他几个滑动方法: // 带动画移动距离

    2.5K21

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

    动画变化状态为: 蒙版:暗->亮->暗 宽度:->大-> 图片:缩->放->缩 考虑细节 蒙版(黑色蒙版): 1%->50%: 1.0->0.0; 51%->100%: 0.0->1.0...100% 通过右侧滑块底部与Item顶部之间距离占两个Item高度百分比作为process值: ?...得到了一步滑动与process关系,接下来我们来计算一下滑块底部到RecyclerView可见范围顶部距离。...RecyclerView滚动高度与turningLine关系 由上图,我们可得到turniingLine与RecyclerView滑动距离关系,从而得到turningLine值: scrollY...当RecyclerView滑动太快时,单位滚动距离内,滚动监听事件触发频率较低,导致有些Item动画进度未达到100%便从屏幕中消失,从而存在重新滚动到那个Item时,Item动画停留在1%~99%

    2.7K10

    Android 知乎广告效果实现代码

    关系就出来了: 广告item位置 / 广告有效移动距离 = dy / 图片有效移动距离 重写RecyclerView.OnScrollListener中onScrolled方法,我们要得到:广告item...位置 和 广告有效移动距离 @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled...RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(i); //找出屏幕中广告...有些方法可能有点用,但是麻烦了,最后直接在for循环中用firstPosition和lastPosition,这样,虽然会出现rate = – 0.2 这样负值,但是你只要给个判断就可以了: if...而 图片有效移动距离呢,它在自定义imageView中onDraw方法得到: int maxDy = h - itemHeight;//图片可以移动最大距离为(图片有效移动距离): (0 ~ -maxDy

    1.4K40

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

    这两个子类使用方式也很简单,只需要创建对象之后调用attachToRecyclerView()附着到对应RecyclerView对象就可以了。...attachToRecyclerView() 现在来看attachToRecyclerView()这个方法,SnapHelper正是通过该方法附着到RecyclerView,从而实现辅助RecyclerView...RecyclerView.smoothScrollBy()这个方法实现原理这里就不展开了 ,它作用就是根据参数平滑滚动RecyclerViewItemView相应距离。...到RecyclerView中间位置距离,可以支持水平方向滚动和竖直方向滚动两个方向计算。...,但是无法直接确定哪个在起点哪个在终点(因为有正反向布局) //所以取两者中起点坐标那个作为起点坐标 //终点坐标的取值一样道理 int start

    5.9K40
    领券