Android:ScrollView停止滚动的监听

Android:ScrollView停止滚动的监听,第1张

概述Android:ScrollView停止滚动监听首先判断是否在停止滚动的状态(也可以不用这段代码)参考https://www.jianshu.com/p/eb4b745afcd0publicstaticbooleanisfinishScroll(ScrollViewscrollView){try{if(scrollView!=null){ AndroID:ScrollVIEw停止滚动的监听

首先判断是否在停止滚动的状态(也可以不用这段代码)
参考https://www.jianshu.com/p/eb4b745afcd0

    public static boolean isfinishScroll(ScrollVIEw scrollVIEw) {        try {            if (scrollVIEw != null) {                FIEld mScroller = scrollVIEw.getClass().getDeclaredFIEld("mScroller");                mScroller.setAccessible(true);                Object object = mScroller.get(scrollVIEw);                if (object instanceof OverScroller) {                    OverScroller overScroller = (OverScroller) object;                    return overScroller.isFinished();                }            }        } catch (NoSuchFIEldException e) {            e.printstacktrace();        } catch (illegalaccessexception e) {            e.printstacktrace();        }        return false;    }

下面参考https://blog.csdn.net/u011213403/article/details/103704551
isDown记录是否在按下或移动状态,CountDownTimer倒计时100ms结束

    private boolean isDown;//是否在按下或移动状态        private CountDownTimer scrollCountTimer = new CountDownTimer(100, 1){        @OverrIDe        public voID onTick(long millisUntilFinished) {}        @OverrIDe        public voID onFinish() {            if (isfinishScroll(scrollVIEw)){//其实此时已经停止滚动了,也可以不用isfinishScroll再判断是否已停止滚动。                //停止滚动后的 *** 作            }        }    };

scrollVIEw的滚动监听setonScrollchangelistener在API>=23时才可以使用,这里使用getVIEwTreeObserver().addOnScrollChangedListener()。

        scrollVIEw.getVIEwTreeObserver().addOnScrollChangedListener(new VIEwTreeObserver.OnScrollChangedListener() {            @OverrIDe            public voID onScrollChanged() {                if (!isDown){//惯性滚动时,重新倒计时                    scrollCountTimer.cancel();                    scrollCountTimer.start();                }            }        });

调用scrollVIEw的触摸监听setontouchListener

        scrollVIEw.setontouchListener(new VIEw.OntouchListener() {            @OverrIDe            public boolean ontouch(VIEw v, MotionEvent event) {                switch (event.getAction()) {                    case MotionEvent.ACTION_UP:                    case MotionEvent.ACTION_CANCEL://抬起开始倒计时                        isDown = false;                        scrollCountTimer.start();                        break;                    case MotionEvent.ACTION_DOWN:                    case MotionEvent.ACTION_MOVE://按下或移动状态取消倒计时                        isDown = true;                        scrollCountTimer.cancel();                        break;                }                return ontouchEvent(event);            }        });
总结

以上是内存溢出为你收集整理的Android:ScrollView停止滚动的监听全部内容,希望文章能够帮你解决Android:ScrollView停止滚动的监听所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/998887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存