1. 程式人生 > >ScrollView監聽滑動到頂部和底部的方法

ScrollView監聽滑動到頂部和底部的方法

col sets @override bottom void bsp div nds over

不需要監聽滑動位置,只需要重寫ScrollView的onOverScrolled和stopNestedScroll方法就可以了

public class ReadScrollView extends ScrollView{
    private int mScrollY = 0;
    private boolean mClampedY = false;
    public ReadScrollView(Context context) {
        super(context);
    }

    public ReadScrollView(Context context, AttributeSet attrs) {
        
super(context, attrs); } public ReadScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } /** * 監聽變化---一般用不到 * @param scrollX * @param scrollY * @param clampedX * @param clampedY */ // @Override
// protected void onScrollChanged(int l, int t, int oldl, int oldt) { // super.onScrollChanged(l, t, oldl, oldt); // if (scrollChangedListener != null){ // scrollChangedListener.onScrollChanged(l,t,oldl,oldt); // } //// DebugUtil.d("l==" + l +" t==" + t +" oldl==" + oldl + " oldt=="+oldt);
// } @Override protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { super.onOverScrolled(scrollX, scrollY, clampedX, clampedY); //scrollY=位置0和最底y坐標;clampedY=是否到頂部或者底部 mScrollY = scrollY; mClampedY = clampedY; // DebugUtil.d("======l==onOverScrolled"+" scrollY="+scrollY+" clampedY="+clampedY ); } /** * 刷新到頂部和底部 */ @Override public void stopNestedScroll() { super.stopNestedScroll(); if (mClampedY){ if (mScrollY == 0){ scrollChangedListener.onScrollChangedTop(); }else { scrollChangedListener.onScrollChangedBottom(); } } DebugUtil.d("======l==stopNestedScroll" ); } OnScrollChangedListener scrollChangedListener; public void setScrollChangedListener(OnScrollChangedListener scrollChangedListener) { this.scrollChangedListener = scrollChangedListener; } /** * */ public interface OnScrollChangedListener{ //到達頂部 void onScrollChangedTop(); //到達底部 void onScrollChangedBottom(); //監聽變化 // void onScrollChanged(int l,int t,int oldl,int oldt); } }

使用

scrollview.setScrollChangedListener(new ReadScrollView.OnScrollChangedListener() {
            @Override
            public void onScrollChangedTop() {
                ShowUtils.toast("頂部");
            }

            @Override
            public void onScrollChangedBottom() {
                ShowUtils.toast("底部");
            }
        });

ScrollView監聽滑動到頂部和底部的方法