自定义ScrollView,实现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
					//滑动数据已经接收,在这里实现你的功能
				}
			});

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

时间: 2024-08-16 17:38:39

自定义ScrollView,实现ScrollView滑动监听并记录滑动位置。的相关文章

ScrollView的滑动监听(以HorizontalScrollView为例)

ScrollView不能像其他组件一样使用onScrollChanged()方法是因为它用protected封装了 protected void onScrollChanged(int x, int y, int oldx, int oldy); 想要实现监听需要简单自定义组件. 1:自定义组件 public class ObservableScrollView extends HorizontalScrollView { private ScrollViewListener scrollVie

使用swipecard实现卡片视图左右滑动监听以及点击监听

前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件swipecard,当然这并不是安卓爸爸创造的,这是国内的一个我认为是大牛的一个人随便写着玩儿搞出来了,我看了他的代码介绍已经很清晰了,但是对于刚入门学安卓的同学们来说理解还是得需要一定的时间,于是在这里我就给大家把他的代码给精简一下步骤,希望能给大家一些帮助. (图片无法上传所以导致图片不可见,大家可以点击我的有道链接查看 http://note.youdao.com/noteshare?id=ef7292c53d507cd0e1f3

jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化

jQuery封装自定义事件--valuechange(动态的监听input,textarea)之前值,之后值的变化 js监听输入框值的即时变化 网上有很多关于 onpropertychange.oninput的讲解,但是他们都不是我想要的,我想要的是动态的监听input,textarea等之前值和之后改变的值,比如像KISSY中的valuechange事件一样,当我在输入框里面开始输入1的时候,那么之前值是undefined,现在的值是1,当我接着输入2时候,那么之前的值是1,现在的值是2.等,

26.监听通知记录、观察者

黑名单监听通话记录,使黑名单里的电话不能打进来,也不能打出去 在打电话的时候有时候能把通话记录的黑名单删除,有时候删不了,这是由于是俩个进程,所以注册个观察者监听通话记录 在找内容提供者的主机名时先看清单文件 CallSmsSafeService public class CallSmsSafeService extends Service { private InnerSmsReceiver receiver; private BlackNumberDao dao; //监听当前呼叫的状态 p

通过重写OnScrollListener来监听RecyclerView是否滑动到底部

为了增加复用性和灵活性,我们还是定义一个接口来做监听滚动到底部的回调,这样你就可以把它用在listview,scrollView中去. OnBottomListener package kale.com.waterfall; /** * @author Jack Tony * @brief * @date 2015/4/6 */ public interface OnBottomListener { public void onBottom(); } 接着,我们来重写RecyclerView.O

Android 小问题整理1 ViewPagerIndicator和ViewPager的滑动监听

2015-10-30 今天使用ViewPagerIndicator时遇到个小问题,使用ViewPagerIndicator和ViewPager关联之后,再对ViewPager的滑动事件进行监听viewpager.setOnPageChangeListener(),然后监听失效了. 1 mViewPager.setAdapter(new MyAdapter()); 2 mIndicator.setViewPager(mViewPager);//关联ViewpagerIndicator和ViewPa

ViewPager滑动监听的参数解释

viewpager.setOnPageChangeListener (new OnPageChangeListener() { @Override public void onPageSelected(int select) { // TODO Auto-generated method stub Log. d( "dml", "onPageSelected:::::select ============ " + select) ; } @Override publ

iOS 键盘的监听 调整view的位置

iOS在处理键盘的出现和消失时需要监听UIKeyboardWillChangeFrameNotifications/UIKeyboardDidHideNotifications - (void)viewDidLoad { [super viewDidLoad]; //添加监听 键盘消失 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDown) name:UIKeyboardDid

ListView滑动监听和设置点击事件

viewholder_item.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_pa