RecyclerView通过manager.smoothScrollToPosition()来改变滑动速度

转载 2017年05月17日 14:48:02
1.主要通过重写
LinearLayoutManager 的smoothScrollToPosition方法
public class ScollLinearLayoutManager extends LinearLayoutManager {
  private float MILLISECONDS_PER_INCH = 1f;  //修改可以改变数据,越大速度越慢
  private Context contxt;

  public ScollLinearLayoutManager(Context context) {
    super(context);
    this.contxt = context;
  }

  @Override
  public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
    LinearSmoothScroller linearSmoothScroller =
        new LinearSmoothScroller(recyclerView.getContext()) {
          @Override
          public PointF computeScrollVectorForPosition(int targetPosition) {
            return ScollLinearLayoutManager.this
                .computeScrollVectorForPosition(targetPosition);
          }

          //This returns the milliseconds it takes to
          //scroll one pixel.
          @Override
          protected float calculateSpeedPerPixel
          (DisplayMetrics displayMetrics) {
            return MILLISECONDS_PER_INCH / displayMetrics.density;
            //返回滑动一个pixel需要多少毫秒
          }

        };
    linearSmoothScroller.setTargetPosition(position);
    startSmoothScroll(linearSmoothScroller);
  }

  //可以用来设置速度
  public void setSpeedSlow(float x) {
    //自己在这里用density去乘,希望不同分辨率设备上滑动速度相同
    //0.3f是自己估摸的一个值,可以根据不同需求自己修改
    MILLISECONDS_PER_INCH = contxt.getResources().getDisplayMetrics().density * 0.3f+(x);
  }
  
}

RecyclerView smoothScrollToPosition的滚动时间

当RecyclerView中的数据集很大时,通过smoothScrollToPosition去滚动到一个位置,如果这个位置和当前位置相差很远,比如说300项,你会发现整个过程很长,比如说我遇到的,滚动...
  • u012123268
  • u012123268
  • 2016年04月21日 18:37
  • 3702

RecyclerView调用smoothScrollToPosition() 控制滑动速度

调用RecyclerView的smoothScrollToPositon可以指定RecyclerView滑动到某个item,但这个滑动的速度很快,如果想要滑动速度可以控制,那么应该怎么办呢?...
  • a86261566
  • a86261566
  • 2016年03月16日 17:06
  • 22183

RecyclerView scrollToPosition 无效的问题

RecyclerView是个比较蛋疼的控件,给我的第一感觉就是竟然连OnItemClick都没有, 当然,网上有很多的解决方法,可以自己实现。 然而今天,在用到这个控件时,又遇到了个奇葩的问题...
  • Pansing
  • Pansing
  • 2015年11月11日 17:01
  • 21615

Android RecyclerView.smoothScrollToPosition()的实现

本以为RecyclerView会像ListView一样有smoothScrollToPosition的方法,用来做双击返回列表顶部的方法,但实际添加这个方法以后并没有什么卵用,于是查看器源代码 pu...
  • lvshaorong
  • lvshaorong
  • 2016年10月31日 10:55
  • 4430

关于RecyclerView滑动速度和抛掷速度的控制和改变

这是我发布的第一篇技术博客,本应该在上个月做项目的时候实时发布的,那时候的理解也最深刻。由于个人执行力不够,拖延到现在,万事开头难,开始了就要坚持下去。 这篇文章主要讲在Android的Recycl...
  • qq_28051795
  • qq_28051795
  • 2016年09月18日 13:34
  • 1683

Android RecyclerView滚动定位

RecyclerView在安卓开发中非常实用,而且简单易用,但是在实际开发中一直有一个问题困扰着我,就是定位问题,实际的项目中总是会遇到这样的需求:检索RecyclerView的某一项(各个项的高度不...
  • tyzlmjj
  • tyzlmjj
  • 2015年10月18日 14:25
  • 50489

RecyclerView滑动到指定Position的方法

Question 最近在写 SideBar 的时候遇到一个问题,当执行 Recyclerview 的 smoothScrollToPosition(position) 的时候,Recyclerview...
  • yangxi_001
  • yangxi_001
  • 2017年09月12日 09:56
  • 718

RecyclerView存在大量Item时,当滚到底部时快速滑到顶部

在使用RecyclerView展示图片或者其他信息时,往往需要展示很多的Item,当滚到底部时又想回到顶部,如果一点一点的向上划去比较麻烦,而且用户体验不好。因此添加一个快速回到顶部的按钮是很有必要的...
  • wb175208
  • wb175208
  • 2017年03月17日 10:00
  • 5740

Android开发:RecyclerView平滑流畅的滑动到指定位置

RecyclerView.smoothScrollToPosition(int);发现效果并不理想,滑动过程很突兀,很快就滑动到了指定位置,并没有像函数名那样smooth,本文将分享如何使得Recyc...
  • Xiong_IT
  • Xiong_IT
  • 2017年10月17日 20:11
  • 1516

RecyclerView滚动到指定位置

滚动到指定位置recyclerView.scrollToPosition(position);平滑滚动到指定位置recyclerView.smoothScrollToPosition(position...
  • CSDN_LQR
  • CSDN_LQR
  • 2016年12月24日 15:31
  • 16296
收藏助手
不良信息举报
您举报文章:RecyclerView通过manager.smoothScrollToPosition()来改变滑动速度
举报原因:
原因补充:

(最多只允许输入30个字)