RecyclerView滑动距离计算

来源:互联网 发布:ipad 看图软件 编辑:程序博客网 时间:2024/06/03 16:01

最近在写关于RecyclerView滑动到最底部时,给出一个判断,是否到达最底部。但不知道为什么,总是得不到ScrollY,一直为0。没办法,只能去网上找一些相关资料。但因为是实习生,自定义RecycleView这些很多都看不懂,只能去找最简单的办法。下面就是我找到的办法,在这里记录一下。非常感谢知乎用户-张宇 给的解法。

废话不多说,代码贴上:

    /**     * 还能向下滑动多少     */    private int getDistance(){        LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();        View firstVisibItem = mRecyclerView.getChildAt(0);        int firstItemPosition = layoutManager.findFirstVisibleItemPosition();        int itemCount = layoutManager.getItemCount();        int recycleViewHeight = mRecyclerView.getHeight();        int itemHeight = firstVisibItem.getHeight();        int firstItemBottom = layoutManager.getDecoratedBottom(firstVisibItem);        return (itemCount - firstItemPosition - 1)* itemHeight - recycleViewHeight+firstItemBottom;    }

当前的getDistance()就是剩余的距离。


    /**     * 已滑动的距离     */    private int getDistance(){        LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();        View firstVisibItem = mRecyclerView.getChildAt(0);        int firstItemPosition = layoutManager.findFirstVisibleItemPosition();        int itemCount = layoutManager.getItemCount();        int recycleViewHeight = mRecyclerView.getHeight();        int itemHeight = firstVisibItem.getHeight();        int firstItemBottom = layoutManager.getDecoratedBottom(firstVisibItem);        return (firstItemPosition + 1)*itemHeight - firstItemBottom;    }

当前的getDistance()就是已经滑动的距离了。然后我根据这个人的算法,判断自己有没有滑倒最底部了。

    /**     * 获取RecyclerView滚动位置     */    private int getDistance(){        LinearLayoutManager layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();        View firstVisibItem = mRecyclerView.getChildAt(0);        int firstItemPosition = layoutManager.findFirstVisibleItemPosition();        int itemCount = layoutManager.getItemCount();        int recycleViewHeight = mRecyclerView.getHeight();        int itemHeight = firstVisibItem.getHeight();        int firstItemBottom = layoutManager.getDecoratedBottom(firstVisibItem);        return (itemCount - firstItemPosition - 1)* itemHeight - recycleViewHeight;    }
这样当getDistance()等于0时,我就知道已经滑动到最底部了。如果你们RecyclerView上面有间距,自己看一下getDistance()等于多少。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 贴在玻璃上的贴纸撕掉后有胶怎么办 魅族手机部分时间上划失效怎么办 别人电脑上c盘文件无权访问怎么办 网络已连接但上不了网怎么办 asp复选框选中的有重复值怎么办 邮件在邮递中出现损坏怎么办呢? 爱彩彩票资金密码忘记了怎么办 注册彩票网站忘了资金密码怎么办 电车电瓶加水后电压变低怎么办 电动车电瓶四块电池坏了一块怎么办 把小孩的玩具修坏了怎么办 电动车插头太紧了插不到底怎么办 宜家沙发不能更换布套怎么办 苹果官网买的无线充坏了怎么办 苹果官网上买的耳机坏了怎么办 led灯开关关掉了闪烁是怎么办 我朋友借的网贷光给我打电话怎么办 电脑上的文件变成了图片查看怎么办 外卖店打印机纸卡住打不开了怎么办 微信撤回图片留下一堆代码怎么办 拼多多砍价免费拿砍不到0元怎么办 一岁三个月宝宝老足拉肚子怎么办丶 想打好关系送礼发红包不敢收怎么办 我在相亲市场太受欢迎了怎么办小说 有人报警说我诈骗警察说立案怎么办 微信账号长时间未登录不想要怎么办 手机号注销了百度云登录不了怎么办 申请百度云账号的手机不用了怎么办 新注册的微信号显示账号异常怎么办 注册公众号说邮箱被占用了怎么办 向钱贷登录手机号换了怎么办 qq号绑定的手机号码换了怎么办 用手机号注册的支付宝换号了怎么办 支付宝转的账户手机号消号了怎么办 激活微信账号手机号写错了怎么办 大学试卷没有写名字和考号怎么办 公司被注销了公众号还想要怎么办 公司认证的公众号公司注销了怎么办 信而富注册手机号码不用了怎么办 信而富本时段额度已放完怎么办 知道qq号密码账号忘了怎么办