ScrollView监听滑动到顶部和底部的方法

不需要监听滑动位置,只需要重写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){
        mClampedY = false;
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("底部");
            }
        });

 

转载于:https://www.cnblogs.com/Jieth/p/9192611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值