ScrollView监听停止滑动,判断是否滑到底部

监听停止滑动

本以为ScrollView和ListView一样有setOnScrollListener方法。想不到ScrollView竟然没有。那就只能通过手势触摸事件来判断了。当手离开屏幕时,开始往handler中不断发生消息,直至滑动停止。

判动是否滑到底部

在滑动停止的时候,通过ScrollView和Linearlayout(scrollview的子控件)的高度以及滑动的距离来判断。

 

PS:我的scrollview是横向的,所以使用的是x坐标和width。

 

scrollView.setOnTouchListener(new OnTouchListener() {
			private int lastY = 0;
			private int touchEventId = 0x1234;
			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.getScrollX()) {
							scrollerStop(scroller);
						} else {
							handler.sendMessageDelayed(handler.obtainMessage(
									touchEventId, scroller), 5);
							lastY = scroller.getScrollX();
						}
					}
				}
			};

			@Override
			public boolean onTouch(View v, MotionEvent event) {

				int eventAction = event.getAction();
				int y = (int) event.getRawX();
				lastY = 0;
				switch (eventAction) {
				case MotionEvent.ACTION_UP:
					if (lastY != y) {
						handler.sendMessageDelayed(
								handler.obtainMessage(touchEventId, v), 10);
					}
					break;
				default:
					break;
				}
				return false;
			}

			/**滑动停止后的响应						*/						
			private void scrollStop(Object view) {				 
				 if(cityLinLayout.getMeasuredWidth() <= (scrollView.getWidth() + scrollView.getScrollX()+5)){
		                  	/***										
					*滑动到底部的操作		
					*/              	                 				 
				}
				  if(scrollView.getScrollX() < 0){
					
					/***										
					*滑动到顶部的操作
					*/				
				}
			}

		});

	}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值