监听ScrollView滚动到顶部或者底部做相关事件拦截

在实际应用开发中,遇到一个需求,页面滑动到底部的时候,自动切换到下一个页面;所以想到使用Scrollview,网上有比较好的自定义SmartScrollvew;大家可以直接复制代码拿来使用,网址如下:Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)

本以为问题会得到有效解决:(滑动到底部切换到下一页,滑动到顶部切换到上一页)

但是,有个问题就是每次滑动到顶部(竟然切换到下一页)

mSmartScrollview.setScanScrollChangedListener(newSmartScrollview.ISmartScrollChangedListener() {

@Override

public voidonScrolledToBottom() {

if(mSmartScrollview.isScrolledToBottom()) {//判断是否是在底部

//TODO 滑到底部的操作

}}

@Override

public voidonScrolledToTop() {

if(mSmartScrollview.isScrolledToTop()) {//判断是否是在顶部

//TODO 滑到顶部的操作

}}

}});

这是因为向上滑动的时候scrollY会变成负数,clampedY也会一瞬间成为true

于是我对方法onOverScrolled(进行了修正

监听ScrollView滚动到顶部或者底部做相关事件拦截_第1张图片

下面对OnScrollchanged()方法进行解析下:

Scrollview在滑动过程中会不断的调用onscrollChanged方法通过判断前后位置就可以对Scrollview做下一步的操作

@Override

protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX,

boolean clampedY) {

// TODO Auto-generated method stub

super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);

}

onOverScrolled方法也是有四个参数 第一个参数为距离远点的X轴的距离

第二个参数为距离原点的Y轴的距离

第三个参数当ScrollView滑动到左侧边界的时候值为true

第四个参数当ScrollView滑动到下边界的时候值为true

你可能感兴趣的:(监听ScrollView滚动到顶部或者底部做相关事件拦截)