您的位置:首页 > 移动开发 > Android开发

Android中scrollview滑动监测

2016-07-21 13:29 459 查看
原文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

public class ObserveScrollView extends ScrollView {  

  

    private ScrollListener mListener;    

  

    public static interface ScrollListener {//声明接口,用于传递数据  

        public void scrollOritention(int l, int t, int oldl, int oldt);  

    }  

  

    public ObserveScrollView(Context context, AttributeSet attrs,  

            int defStyle) {  

        super(context, attrs, defStyle);  

        // TODO Auto-generated constructor stub  

    }  

  

    public ObserveScrollView(Context context, AttributeSet attrs) {  

        super(context, attrs);  

        // TODO Auto-generated constructor stub  

    }  

  

    public ObserveScrollView(Context context) {  

        super(context);  

        // TODO Auto-generated constructor stub  

    }  

  

    @Override  

    protected void onScrollChanged(int l, int t, int oldl, int oldt) {  

        // TODO Auto-generated method stub  

        super.onScrollChanged(l, t, oldl, oldt);  

        if (mListener != null) {  

            mListener.scrollOritention(l, t, oldl, oldt);  

        }  

    }  

  

    public void setScrollListener(ScrollListener l) {  

        this.mListener = l;  

    }  

  

}  

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

[java] view
plain copy

scrollview.setScrollListener(new ScrollListener() {  

  

                @Override  

                public void scrollOritention(int l, int t, int oldl, int oldt) {  

                    // TODO Auto-generated method stub  

                    //滑动数据已经接收,在这里实现你的功能  

                }  

            });  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: