RecycleView内部没有帮我们实现ScrollTo的方法,不过帮我们实现了ScrollBy,我们可以通过ScrollBy自定义一个支持scrollTo的RecycleView。

public class ScrollToRecyclerView extends RecyclerView {
//记录滚动的总距离,类似view中的mScrollX和mScrollY
private int sx = 0, sy = 0;
//自己定义的滚动监听接口 public interface RecyclerScrollChangeListener{
void ScrollChange(int y);
} private RecyclerScrollChangeListener mScrollListener = null; public ScrollToRecyclerView(Context context) {
super(context);
addScrollListener();
} public ScrollToRecyclerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
addScrollListener();
} public ScrollToRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
addScrollListener(); }
//重写scrollTo方法,通过内部的scrollBy实现scrollTo的功能
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
//计算滚动的相对距离,通过传进来的x和当前的sx差值就是scrollBy需要滚动的值
scrollBy(x - sx, y - sy);
}
//添加view的scrolllistener,在view滚动时根据滚动的距离自己计算sx,sy
private void addScrollListener(){
addOnScrollListener(new OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
// oldsx = sx;
// oldsy = sy
//因为dx和dy是相对上次的滚动距离,所以通过一开始的累加可以得到总的sx和sy
sx += dx;
sy += dy;
super.onScrolled(recyclerView, dx, dy);
//此处如果有需要监听滚动变化的话在这回调
if(mScrollListener != null){
mScrollListener.ScrollChange(sy);
}
}
});
}
//设置监听
public void setRecyclerScrollListener(RecyclerScrollChangeListener scrollListener) {
this.mScrollListener = scrollListener;
}
}

支持scrollTo的RecycleView的更多相关文章

  1. hybrid App h5二级页面返回的时候保持与一级页面浏览的位置一致

    最近在开发公司hybrid app的时候,需要将原本原生的配置中心模块统一变更为H5,做完之后从测试那里反馈回来这样一个问题,当滑到页面底部或中部的时候进入子页面进行设置,返回的时候页面应该定位到离开 ...

  2. Android开源项目和轮子

    推荐查看Github最全面的Android开源项目汇总 功能框架 数据库 ORMLite框架 greenDaoMaster框架 Xutils的DButils ORMLitehe和greenDaoMas ...

  3. 【JS】328- 8个你不知道的DOM功能

    最近一直在关注工具,从 React 和 npm-install-everything 中休息一下,看看一些原生的 DOM 和 Web API 的功能,他们可以在没有任何依赖库的浏览器中直接运行. 这篇 ...

  4. 13 条高效实用的 JavaScript 单行代码

    JavaScript可以实现很多令人惊奇的事! 从复杂的框架到处理API,有太多的东西可以学习. 甚至,仅用一行代码,它也能完成一些很棒的工作. 不信?那么请看这13条JavaScript单行代码,用 ...

  5. 原生方法scrollTo支持滚动特效

    scrollTo默认的是瞬间滚动到坐标位置, 使用配置方法, behavior属性设置为smooth就可以支持平滑滚动了,不过这种方法兼容性不行,并且无法支持配置滚动速率 // 默认滚动效果,瞬时滚动 ...

  6. ScrollTo:平滑滚动到页面指定位置

    使用方法 1.准备jQuery库和scrollTo.js插件. <script type="text/javascript" src="js/jquery.js&q ...

  7. android基础开发之RecycleView(1)---基本使用方式

    RecycleView是google为了优化listview,gridview 提供的一个新的控件. 1.android 导入recycleview 在app的gradle里面加入: dependen ...

  8. Android 自定义ScrollView 支持惯性滑动,惯性回弹效果。支持上拉加载更多

    先讲下原理: ScrollView的子View 主要分为3部分:head头部,滚动内容,fooder底部 我们实现惯性滑动,以及回弹,都是靠超过head或者fooder 就重新滚动到  ,内容的顶部或 ...

  9. 仿今日头条最强顶部导航指示器,支持6种模式-b

    项目中经常会用到类似今日头条中顶部的导航指示器,我也经常用一个类似的库PagerSlidingTabStrip,但是有时并不能小伙伴们的所有需求,所以我在这个类的基础上就所有能用到的情况做了一个简单的 ...

随机推荐

  1. 从搭建V2Ray服务器到编译V2Milk的完整过程

    概述 因为公司出口ip一直在变,所以waf白名单不好加入,所以搭一个了代理服务器 .搭建了V2Ray服务器 .为了好管理,找了一个@Zzm317开源的V2Milk. V2Milk为V2Ray跨平台定制 ...

  2. BBS论坛(十五)

    15.1.登录界面完成 (1)front/signbase.html {% from 'common/_macros.html' import static %} <!DOCTYPE html& ...

  3. 我要曝光!CDN 省钱大法!

    七夕节刚过去,小明却特别郁闷,因为七夕当天,他错过了和远在北京的女神表白的机会.事情的经过是怎样的呢?为了在七夕当天送给自己女神一件礼物,小明在某购物网站上花重金购买了特别的礼物,礼物是从广东发送,结 ...

  4. 智能压缩,摆脱用 Gzip 还是 Brotli 的纠结

    近日,又拍云上线了“智能压缩”功能,同时支持 Gzip 和 Brotli 压缩算法,在节约流量的同时,进一步减少用户的等待时间. CDN 流量问题一直以来是大家关注的重点,又拍云针对流量节约上线了一系 ...

  5. Java核心技术及面试指南:视频列表

    如下是本书相关内容的视频列表,会动态更新 第一章 1 视频1.1  JDK和JRE和JVM的区别,安装Java开发环境    1.1.1  第2页 2 视频1.2  编写第一个HelloWorld程序 ...

  6. 【WebApi】通过HttpClient调用Web Api接口

    HttpClient是一个封装好的类,它在很多语言中都有被实现,现在HttpClient最新的版本是4.5. 它支持所有的http方法,自动转向,https协议,代理服务器. 一.Api接口参数标准化 ...

  7. 从锅炉工到AI专家(8)

    ImageNet 基础部分完成,从本篇开始,会略微的增加一些难度. 通常说,在解决问题的时候,大多程序员都会在网上搜索,寻找一些相似相近的案例作为参考.这个方式在机器学习领域同样有效.可惜早期的时候, ...

  8. 基于三层架构的增删改查Get知识点

    给DataGridView控件绑定datatable数据源之后总是会多一行,在属性里修改属性allowuserToaddrow值为false即可 不可编辑状态是设置成只读状态即可,英文属性readon ...

  9. 如何学习SpringCloud?(SpringCloud模板)

    前言 对于SpringCloud来说(下面简称SC),现在网上已经有很多教程写的非常详细,因为SC的组件特别多,虽然不是所有组件都需要用到,但是学习的时候我们都需要去学习和了解.所以我想如果再写把每一 ...

  10. keepalived+双主实践HA

    工作不怎么忙,搞点儿开发吧差点儿事,就想着弄点儿架构的事儿.正好前段时间看过关于keepalived+双主实现高可用的文章,也恰好身边的朋友所在的公司也部分用这个架构.没什么事儿就搞搞吧,正好对比下M ...