Android中scrollview滑动监测

原文http://blog.csdn.net/u012527802/article/details/47320009

Android自带的ScrollView对于滑动监听接口没有开放,然而在许多时候记录ScrollView的滑动位置,实现这个功能比较简单,自己实现一个ObserveScrollView类来继承ScrollView,然后重写里面的onScrollChanged(int l, int t, int oldl, int oldt)方法,本方法就是ScrollView的滑动监听,接着声明一个接口,在重写的方法里利用接口回调,将滑动的数据传出去。

        onScrollChanged(int l, int t, int oldl, int oldt)方法的4个参数,以屏幕的左上角为(0,0)点,l表示滑动后的x值,oldl表示滑动前的x位置,t表示滑动后的y值,oldt表示滑动前的y位置。

下面直接上代码:

[java]  view plain  copy
  1. public class ObserveScrollView extends ScrollView {  
  2.   
  3.     private ScrollListener mListener;    
  4.   
  5.     public static interface ScrollListener {//声明接口,用于传递数据  
  6.         public void scrollOritention(int l, int t, int oldl, int oldt);  
  7.     }  
  8.   
  9.     public ObserveScrollView(Context context, AttributeSet attrs,  
  10.             int defStyle) {  
  11.         super(context, attrs, defStyle);  
  12.         // TODO Auto-generated constructor stub  
  13.     }  
  14.   
  15.     public ObserveScrollView(Context context, AttributeSet attrs) {  
  16.         super(context, attrs);  
  17.         // TODO Auto-generated constructor stub  
  18.     }  
  19.   
  20.     public ObserveScrollView(Context context) {  
  21.         super(context);  
  22.         // TODO Auto-generated constructor stub  
  23.     }  
  24.   
  25.     @Override  
  26.     protected void onScrollChanged(int l, int t, int oldl, int oldt) {  
  27.         // TODO Auto-generated method stub  
  28.         super.onScrollChanged(l, t, oldl, oldt);  
  29.         if (mListener != null) {  
  30.             mListener.scrollOritention(l, t, oldl, oldt);  
  31.         }  
  32.     }  
  33.   
  34.     public void setScrollListener(ScrollListener l) {  
  35.         this.mListener = l;  
  36.     }  
  37.   
  38. }  

然后在布局文件中用重写的ObserveScrollView代替自带的ScrollView,并在代码中设置监听器。

[java]  view plain  copy
  1. scrollview.setScrollListener(new ScrollListener() {  
  2.   
  3.                 @Override  
  4.                 public void scrollOritention(int l, int t, int oldl, int oldt) {  
  5.                     // TODO Auto-generated method stub  
  6.                     //滑动数据已经接收,在这里实现你的功能  
  7.                 }  
  8.             });  
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值