Android ScrollView 控件的滑动监听

Android ScrollView 控件的滑动监听

1.直接给Scroll View一个setOnTouchListener,在onTouch方法调用Handle中的方法,每次调用都要将当前的Y位置保存下来,又来与下次的位置进行比较,以此来判断当前状态相对于上次的位置变化,直接上代码。

2.代码​ `

private void Scroll(){
​
        mscrollView.setOnTouchListener(new View.OnTouchListener() {
            private int lastY = 0;
            private int touchEventId = -9983761;
            @SuppressLint("ClickableViewAccessibility")
            Handler handler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    View scroller = (View) msg.obj;
                    if (msg.what == touchEventId) {
                        if (lastY == scroller.getScrollY()) {
                          
//                            ToastUtil.showToastText(getContext(),"停止了");
//                            bottomNavigationView.setVisibility(View.VISIBLE);
                            lastY = scroller.getScrollY();} else if(lastY > scroller.getScrollY()) {
//                            ToastUtil.showToastText(getContext(),"向下划");
                            bottomNavigationView.setVisibility(View.VISIBLE);
                            handler.sendMessageDelayed(handler.obtainMessage(touchEventId, scroller), 1);
                            lastY = scroller.getScrollY();
                        }else{
//                            ToastUtil.showToastText(getContext(),"向上划");
                            bottomNavigationView.setVisibility(View.GONE);
                            handler.sendMessageDelayed(handler.obtainMessage(touchEventId, scroller), 1);
                            lastY = scroller.getScrollY();
                        }
                    }
                }
            };
            @Overridepublic boolean onTouch(View v, MotionEvent event) {
                int eventAction = event.getAction();
                switch (eventAction) {
                    case MotionEvent.ACTION_UP:
                        handler.sendMessageDelayed(handler.obtainMessage(touchEventId, v), 5);
                        break;
                    default:
                        break;
                }
                return false;
            }
        });}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值