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

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

作者: jxnk25 | 来源:发表于2018-04-10 11:20 被阅读106次

    近期发布公司项目发了一个版本,有一个页面是采用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,日志如下

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

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

       @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踩坑之旅:适配锤子系列手机底部、顶部滚动监听问题

      本文链接:https://www.haomeiwen.com/subject/yeughftx.html