码迷,mamicode.com
首页 > 其他好文 > 详细

自定义ScrollView,实现ScrollView滑动监听并记录滑动位置。

时间:2015-08-06 18:23:10      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:继承   数据   android   scrollview   

        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位置。

下面直接上代码:

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,并在代码中设置监听器。

scrollview.setScrollListener(new ScrollListener() {

				@Override
				public void scrollOritention(int l, int t, int oldl, int oldt) {
					// TODO Auto-generated method stub
					//滑动数据已经接收,在这里实现你的功能
				}
			});



版权声明:本文为博主原创文章,未经博主允许不得转载。

自定义ScrollView,实现ScrollView滑动监听并记录滑动位置。

标签:继承   数据   android   scrollview   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!