RecyclerView在快速滑动的时候不加载图片,缓慢滑动恢复

一开始我对这个有点懵怎么判断是不是快速滑动,在网上找了很久,别人的博客里面都是滑动的时候停止加载图片,静止的时候开始加载图片,可是这不是我要的效果啊,缓慢滑动或者缓慢惯性滑动的时候我也要加载图片的呀。

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
        //dx为RecyclerView沿着X轴(横向)滑动时偏移量. 
         //正数为正向滑动(向右)偏移量,负数为反向滑动(向左)偏移量

         //dy为RecyclerView沿着y轴(纵向)滑动时偏移量. 
         //正数为正向滑动(向下)偏移量,负数为反向滑动(向上)偏移量
}

既然是这样,那我就简单判断一下这个dx和dy此刻的偏移量是多少不久好了,于是
注:150这个数据基本上滑动浏览界面是基本不会超过的,偶尔超过页面马上降落数值,只有用力滑动才会出现

但是出现问题了,但我在快速滑倒最下方的时候或者最上方的时候,比如突然到顶部或者突然到底部,这个时候就会停止滑动,并且dy保持之前的数值。所以这里的话还要判断是不是已经滑动停止

    override fun onScrolled(dx: Int, dy: Int) {
        LogUtils.iTag("scroll", dy)
        //判断是否超出限制
        if (abs(dy) < limit) {
            listener?.onScrollSlow()
        } else {
            listener?.onScrollFast()
        }
        super.onScrolled(dx, dy)
    }

    override fun onScrollStateChanged(state: Int) {
        super.onScrollStateChanged(state)
        //快速滑动突然停止 dy仍然会保留之前数值 所以还需要判断是否停止滑动
        if (state == SCROLL_STATE_IDLE) {
            listener?.onScrollSlow()
        }
    }

这样在配合上Glide的加载与暂停就完成了

mRvList.setOnScrollFastListener(new FeedRootRecyclerView.ScrollFastListener() {
            @Override
            public void scrollFast() {
                Glide.with(mContext).pauseRequests();
            }

            @Override
            public void scrollSlow() {
                Glide.with(mContext).resumeRequests();
            }
        });

有什么其他的方法,请在评论出指出,给与我帮助

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 哦,天呀!这种痛感不知道如何描述,一开始若有似无,甚至会质疑它的存在:我落枕了吗?但是当冷不丁疼那么一下...
    涅海生阅读 1,400评论 0 0
  • 《爱情保卫战》这档电视节目里的涂磊,说话铿将有力,高低起伏让我们这些听众的情绪跟随他的语言而波动。 董卿朗诵诗歌时...
    媚尔阅读 4,235评论 0 1

友情链接更多精彩内容