android_ScrollView 监听滚动到某个位置的方法

来源:互联网 发布:淘宝怎么看总销售额 编辑:程序博客网 时间:2024/05/20 09:06

public class MyListenerScrollView extends PullToRefreshBase<ScrollView> {    private OnScrollListener onScrollListener;    public void setOnScrollListener(OnScrollListener onScrollListener){            this.onScrollListener = onScrollListener;    }    public MyListenerScrollView(Context context) {        super(context);    }    public MyListenerScrollView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyListenerScrollView(Context context, Mode mode) {        super(context, mode);    }    public MyListenerScrollView(Context context, Mode mode, AnimationStyle style) {        super(context, mode, style);    }    @Override    public final Orientation getPullToRefreshScrollDirection() {        return Orientation.VERTICAL;    }    @Override    protected ScrollView createRefreshableView(Context context, AttributeSet attrs) {        ScrollView scrollView;        if (VERSION.SDK_INT >= VERSION_CODES.GINGERBREAD) {            scrollView = new InternalScrollViewSDK9(context, attrs);        } else {            scrollView = new ScrollView(context, attrs);        }        scrollView.setId(R.id.scrollview);        return scrollView;    }    @Override    protected boolean isReadyForPullStart() {        return mRefreshableView.getScrollY() == 0;    }    @Override    protected boolean isReadyForPullEnd() {        View scrollViewChild = mRefreshableView.getChildAt(0);        if (null != scrollViewChild) {            return mRefreshableView.getScrollY() >= (scrollViewChild.getHeight() - getHeight());        }        return false;    }    @TargetApi(9)    final class InternalScrollViewSDK9 extends ScrollView {        public InternalScrollViewSDK9(Context context, AttributeSet attrs) {            super(context, attrs);        }        @Override        protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX,                                       int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {            final boolean returnValue = super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX,                    scrollRangeY, maxOverScrollX, maxOverScrollY, isTouchEvent);            // Does all of the hard work...            OverscrollHelper.overScrollBy(MyListenerScrollView.this, deltaX, scrollX, deltaY, scrollY,                    getScrollRange(), isTouchEvent);            return returnValue;        }        /**         * Taken from the AOSP ScrollView source         */        private int getScrollRange() {            int scrollRange = 0;            if (getChildCount() > 0) {                View child = getChildAt(0);                scrollRange = Math.max(0, child.getHeight() - (getHeight() - getPaddingBottom() - getPaddingTop()));            }            return scrollRange;        }<span style="white-space:pre"></span>/**
<span style="white-space:pre"></span>* 自己写一个接口 把 ScrollView 里面的这个监听的方法给暴漏出去
<span style="white-space:pre"></span>*/
        @Override        protected void onScrollChanged(int l, int t, int oldl, int oldt) {            onScrollListener.onScrollListener(MyListenerScrollView.this,l,t,oldl,oldt);            super.onScrollChanged(l, t, oldl, oldt);        }    }}

ScrollView 本身没有 监听滚动到哪个位置的接口  但是你可以继承 ScrollView  自己实现一个接口  把ScrollView滚动的位置显示出来
0 0
原创粉丝点击