在实际应用开发中,遇到一个需求,页面滑动到底部的时候,自动切换到下一个页面;所以想到使用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(进行了修正
下面对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