Android监听ScrollView滑动距离的简单处理

本文实例为大家分享了Android监听ScrollView滑动距离的具体方法,供大家参考,具体内容如下
使用ScrollView时,有时候我们需要要获取它滑动的距离,Android的API给我们提供了设置监听的方法:

scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {@Overridepublic void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {}});

很遗憾的是:Call requires API 23
点进去看下View里面的OnScrollChangeListener在哪个方法里面监听位置:
/*** This is called in response to an internal scroll in this view (i.e., the* view scrolled its own contents). This is typically as a result of* {@link #scrollBy(int, int)} or {@link #scrollTo(int, int)} having been* called.** @param l Current horizontal scroll origin.* @param t Current vertical scroll origin.* @param oldl Previous horizontal scroll origin.* @param oldt Previous vertical scroll origin.*/protected void onScrollChanged(int l, int t, int oldl, int oldt) {notifySubtreeAccessibilityStateChangedIfNeeded(); if (AccessibilityManager.getInstance(mContext).isEnabled()) {postSendViewScrolledAccessibilityEventCallback(); }mBackgroundSizeChanged = true; if (mForegroundInfo != null) {mForegroundInfo.mBoundsChanged = true; }final AttachInfo ai = mAttachInfo; if (ai != null) {ai.mViewScrollChanged = true; }if (mListenerInfo != null && mListenerInfo.mOnScrollChangeListener != null) {mListenerInfo.mOnScrollChangeListener.onScrollChange(this, l, t, oldl, oldt); }}

【Android监听ScrollView滑动距离的简单处理】一看其实实现不难,不就是自定义个ScrollView, 里面多写个监听, 实现如下:
import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; /** * Created by hucanhui on 16/7/28. */public class ObservableScrollView extends ScrollView{private OnScollChangedListener onScollChangedListener = null; public ObservableScrollView(Context context) {super(context); }public ObservableScrollView(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle); }public ObservableScrollView(Context context, AttributeSet attrs) {super(context, attrs); }public void setOnScollChangedListener(OnScollChangedListener onScollChangedListener) {this.onScollChangedListener = onScollChangedListener; }@Overrideprotected void onScrollChanged(int x, int y, int oldx, int oldy) {super.onScrollChanged(x, y, oldx, oldy); if (onScollChangedListener != null) {onScollChangedListener.onScrollChanged(this, x, y, oldx, oldy); }}public interface OnScollChangedListener {void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); }}

使用简单:
scrollView.setOnScollChangedListener(new ObservableScrollView.OnScollChangedListener() {@Overridepublic void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy){}});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读