美文网首页
ScrllView监听想上滑动,还是向下滚动

ScrllView监听想上滑动,还是向下滚动

作者: AiPuff | 来源:发表于2016-11-22 12:44 被阅读172次
    /**
     * Created by Administrator on 2016/11/22.
     */
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.widget.ScrollView;
    
    /**
     * 可以监听ScrollView的上下滑动 ,实现ScrollListener接口,调用setScrollListener(ScrollListener l)方法。
     * SCROLL_UP :ScrollView正在向上滑动
     * SCROLL_DOWN :ScrollView正在向下滑动
     * @author yxw
     */
    public class ObservableScrollView extends ScrollView {
    
        private ScrollListener mListener;
    
        public static interface ScrollListener {
            public void scrollOritention(int oritention);
        }
    
        /**
         * ScrollView正在向上滑动
         */
        public static final int SCROLL_UP = 0x01;
    
        /**
         * ScrollView正在向下滑动
         */
        public static final int SCROLL_DOWN = 0x10;
    
        /**
         * 最小的滑动距离
         */
        private static final int SCROLLLIMIT = 40;
    
        public ObservableScrollView(Context context) {
            super(context, null);
        }
    
        public ObservableScrollView(Context context, AttributeSet attrs) {
            super(context, attrs, 0);
        }
    
        public ObservableScrollView(Context context, AttributeSet attrs,
                                    int defStyle) {
            super(context, attrs, defStyle);
        }
    
        @Override
        protected void onScrollChanged(int l, int t, int oldl, int oldt) {
            super.onScrollChanged(l, t, oldl, oldt);
    
            if (oldt > t && oldt - t > SCROLLLIMIT) {// 向下
                if (mListener != null)
                    mListener.scrollOritention(SCROLL_DOWN);
            } else if (oldt < t && t - oldt > SCROLLLIMIT) {// 向上
                if (mListener != null)
                    mListener.scrollOritention(SCROLL_UP);
            }
        }
    
        public void setScrollListener(ScrollListener l) {
            this.mListener = l;
        }
    }
    

    调用监听事件:

      scrollView.setScrollListener(new ObservableScrollView.ScrollListener() {
                @Override
                public void scrollOritention(int oritention) {
                    if(oritention==0x01) {
                        //ScrollView正在向上滑动
                        Log.i(TAG,"ScrollView正在向上滑动");
                    }else if(oritention==0x10) {
                       // ScrollView正在向下滑动
                        Log.i(TAG,"ScrollView正在向下滑动");
                    }
                }
            });

    相关文章

      网友评论

          本文标题:ScrllView监听想上滑动,还是向下滚动

          本文链接:https://www.haomeiwen.com/subject/qwvppttx.html