您的位置:首页 > 其它

监听ScrollView滑动状态

2018-02-21 09:00 260 查看
public class
MyScrollView extends
ScrollView
{
    private boolean
isScrolledToTop;
    private boolean
isScrolledToBottom;
    private
IScrollChangedListener
mScrollChangedListener;

    public
MyScrollView(Context
context) {
        super(context);
    }

    public
MyScrollView(Context
context,
AttributeSet attrs,
int defStyle) {
        super(context,
attrs,
defStyle);
    }

    public
MyScrollView(Context
context,
AttributeSet attrs) {
        super(context,
attrs);
    }

    public void
setScrollViewListener(IScrollChangedListener
scrollViewListener) {
        this.mScrollChangedListener
= scrollViewListener;
    }

    @Override
    protected void
onScrollChanged(int
l,
int t,
int oldl,
int oldt) {
        super.onScrollChanged(l,
t,
oldl,
oldt);
        // We take the last son in the scrollview
        View
view =
getChildAt(0);
        if
(view
== null)
            return;
        int
diff = (view.getBottom()
- (getHeight() +
getScrollY()));
//        System.out.println("diff= " + diff
//                + ",view.getBottom()=" + view.getBottom()
//                + ",this.getHeight()=" + getHeight()
//                + ",this.getScrollY()=" + getScrollY());
        // if diff is zero, then the bottom has been reached
        isScrolledToBottom
= false;
        isScrolledToTop
= false;
        if
(diff
== 0) {
            isScrolledToBottom
= true;
            if
(mScrollChangedListener
!= null)
                mScrollChangedListener.onScrolledToBottom();
        } else if
(getScrollY() ==
0) {
            isScrolledToTop
= true;
            if
(mScrollChangedListener
!= null)
                mScrollChangedListener.onScrolledToTop();
        }
    }

    public boolean
isTopEnd() {
        return
isScrolledToTop;
    }

    public boolean
isBottomEnd() {
        return
isScrolledToBottom;
    }

    /**
     * 定义监听接口
     */
    public interface
IScrollChangedListener
{
        void
onScrolledToBottom();

        void
onScrolledToTop();
    }

在外层调用ScrollView对外暴露的接口
 scrollView = (MyScrollView) findViewById(R.id.acscrollView);

        scrollView.setScrollViewListener(new MyScrollView.IScrollChangedListener() {

            @Override

            public void onScrolledToBottom() {

                i++;

                loadData(i);

                xRecyclerView.loadMoreComplete();

            }

            @Override

            public void onScrolledToTop() {

            }

        });

可以在滑动到顶部和底部的时候做一些操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: