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

来源:互联网 发布:辐射4捏脸数据 黑寡妇 编辑:程序博客网 时间:2024/06/05 14:06

监听停止滑动

本以为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() {@Overridepublic 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();}}}};@Overridepublic 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){/****滑动到顶部的操作*/}}});}


 

原创粉丝点击