Android踩坑之旅:适配锤子系列手机底部、顶部滚动监听问题

近期发布公司项目发了一个版本,有一个页面是采用ScrollerView实现的,需要监听是否滚动到底部的事件。通常我们是重写ScrollerView 自己监听滚动事件的,刚开始的监听事件代码如下,实际测试也没问题。

   @Override
    protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
        if (scrollY == 0) {
            isScrolledToTop = clampedY;
            isScrolledToBottom = false;
        } else{
            isScrolledToTop = false;
            isScrolledToBottom = clampedY;
        }
        notifyScrollChangedListeners();
    }

然后这个版本上线之前,突然有人反映锤子手机滚动到底部没有上拉加载效果了,What Fuck!
然后我找了一个锤子手机试了一下,打印了一下onOverScrolled() 方法中的 clampedY 值发现一直为 false,日志如下

《Android踩坑之旅:适配锤子系列手机底部、顶部滚动监听问题》

既然这样的判断方式行不通,那就换种方式,反正条条大路通罗马

《Android踩坑之旅:适配锤子系列手机底部、顶部滚动监听问题》

通用的处理方式,适配锤子手机

   @Override
    protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
        super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
        //由于锤子系列手机监听  clampedY 会一直为flase 所以采用以下方式判断是否滚动至底部
        int measuredHeight = getChildAt(0).getMeasuredHeight();
        if (scrollY == 0) {
            isScrolledToTop = true;
            isScrolledToBottom = false;
        } else if (scrollY + getHeight() == measuredHeight) {
            isScrolledToTop = false;
            isScrolledToBottom = true;
        }
        notifyScrollChangedListeners();
    }

如果觉得文章帮到你,喜欢我的文章可以关注我和朋友一起运营的微信公众号,将会定期推送优质技术文章,求关注~~~

《Android踩坑之旅:适配锤子系列手机底部、顶部滚动监听问题》 欢迎关注“大话安卓”微信公众号

欢迎加入“大话安卓”技术交流群,一起分享,共同进步

《Android踩坑之旅:适配锤子系列手机底部、顶部滚动监听问题》 欢迎加入“大话安卓”技术交流群,互相学习提升

    原文作者:jxnk25
    原文地址: https://www.jianshu.com/p/2f318d8d680c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞