美文网首页
获取ScrollView滑动状态监听(滑动中or停止滑动)

获取ScrollView滑动状态监听(滑动中or停止滑动)

作者: 我想就这样简简单单 | 来源:发表于2019-05-05 11:35 被阅读0次

public class MyScrollViewextends ScrollView {

        /**

                * Runnable延迟执行的时间

            */

            private long delayMillis =100;

        /**

            * 上次滑动的时间

        */

            private long lastScrollUpdate = -1;

            private RunnablescrollerTask =new Runnable() {

            @Override

            public void run() {

                        long currentTime = System.currentTimeMillis();

                        if ((currentTime -lastScrollUpdate) >100) {

                        lastScrollUpdate = -1;

                        onScrollEnd();

            }else {

                    postDelayed(this, delayMillis);

            }

    }

};

            public MyScrollView(Context context) {

                    this(context, null);

            }

        public MyScrollView(Context context, AttributeSet attrs) {

                    this(context, attrs, 0);

            }

        public MyScrollView(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 (lastScrollUpdate == -1) {

                            onScrollStart();

                        postDelayed(scrollerTask, delayMillis);

                    }

                // 更新ScrollView的滑动时间

                lastScrollUpdate = System.currentTimeMillis();

        }

            /**

            * 滑动开始

            */

            private void onScrollStart() {

                        mListener.onScrollStart();

            }

        /**

            * 滑动结束

        */

            private void onScrollEnd() {

                        mListener.onScrollEnd();

            }

           OnScrollListenermListener;

            public void setOnScrollListener(OnScrollListener onRefreshListener) {

                    mListener = onRefreshListener;

      }

            public interface OnScrollListener {

                void onScrollStart();

                void onScrollEnd();

            }

    }

获取到滑动状态之后通过监听回调事件传出去。

引用:https://blog.csdn.net/wzy_1988/article/details/50237111

相关文章

网友评论

      本文标题:获取ScrollView滑动状态监听(滑动中or停止滑动)

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