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);
  }
  
}

相关文章推荐

scrollTo,scrollBy,smoothScrollBy,smoothScrollTo

android 滑动
  • rui_yi
  • rui_yi
  • 2016年06月02日 17:14
  • 1040

Android 判断手势的滑动方向

Android中如何判断手指在屏幕上的滑动方向,其实相对来讲也是比较简单的,只需要判断手滑动的起点来结束点即可。具体方法如下: /** * 判断是向左还是滑动方向 */ @Overri...

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

调用RecyclerView的smoothScrollToPositon可以指定RecyclerView滑动到某个item,但这个滑动的速度很快,如果想要滑动速度可以控制,那么应该怎么办呢?...

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

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

ViewPager实现:无限循环(停止)、定时手动、可嵌套RecyclerView、可控制滑动速度、含有指示器

一、布局很简单: 二、使用也比较简单,直接看代码:private ViewPag
  • dsc114
  • dsc114
  • 2017年06月23日 11:07
  • 314

RecyclerView smoothScrollToPosition的滚动时间

当RecyclerView中的数据集很大时,通过smoothScrollToPosition去滚动到一个位置,如果这个位置和当前位置相差很远,比如说300项,你会发现整个过程很长,比如说我遇到的,滚动...

RecyclerView实现滚动滑动以及点击改变控件颜色

项目中需要横向滚动效果,按照以前的思路,我会写一个ScrollView,里边加一个LinearLayout,在代码中动态加入控件,然后动态删除或者改变颜色,现在android有了新控件Recycler...

问题描述: Android SDK Manager 无法下载更新,或者更新速度超慢,或者待安装包列表不显示 解决方法: 第一步:修改hosts文件 修改后的hosts 文件内容为

问题描述:     Android SDK Manager 无法下载更新,或者更新速度超慢,或者待安装包列表不显示 本来以为修改host  解决方法: 第一步:修改hosts文...

RecyclerView Item拖拽/滑动删除

  • 2016年07月18日 00:33
  • 57KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RecyclerView通过manager.smoothScrollToPosition()来改变滑动速度
举报原因:
原因补充:

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