android ScrollView滚动距离和判断滚动停止状态
2014-01-16 18:36
537 查看
今天很高兴,自己解决了判断ScrollView滚动停止的监听,现在分享给大家。
因为ScrollView没有像listView中的setOnScrollListener()监听,当然也就没有SCROLL_STATE_IDLE等。
解决的问题:
公司项目需要在一个列表中,类似listView,因为业务要求,这个列表是用拼凑的方法,拼凑出来的,所以外层包裹一层ScrollView。
现在公司要求,滑动到最后一条的时候,加载下一部分数据。如果使用scrollView.getScrollY()获得的是你手滑动的距离,当你松开手之后,界面会继续滑动,这个方法是获取不到新的Y值,所以,我们可以添加监听,时刻监视着ScrollView的变化。
需要先给ScrollView添加TouchListener ,在MotionEVENT.Up中,发送延迟的handler,这样就可以起到监听的作用。并且记录当前的高度lastY
在handler中,如果高度lastY和scrollView.getScrollY()是相等的,则表示,ScrollView已经停止,这时再根据你的要求判断停止之后的业务。这时的scrollView.getScrollY()就是控件滚动的距离。如果不相等,证明孩子啊滑动中,继续发handler继续记录lastY。
废话不多说,代码如下。希望对你有所帮助。
因为ScrollView没有像listView中的setOnScrollListener()监听,当然也就没有SCROLL_STATE_IDLE等。
解决的问题:
公司项目需要在一个列表中,类似listView,因为业务要求,这个列表是用拼凑的方法,拼凑出来的,所以外层包裹一层ScrollView。
现在公司要求,滑动到最后一条的时候,加载下一部分数据。如果使用scrollView.getScrollY()获得的是你手滑动的距离,当你松开手之后,界面会继续滑动,这个方法是获取不到新的Y值,所以,我们可以添加监听,时刻监视着ScrollView的变化。
需要先给ScrollView添加TouchListener ,在MotionEVENT.Up中,发送延迟的handler,这样就可以起到监听的作用。并且记录当前的高度lastY
在handler中,如果高度lastY和scrollView.getScrollY()是相等的,则表示,ScrollView已经停止,这时再根据你的要求判断停止之后的业务。这时的scrollView.getScrollY()就是控件滚动的距离。如果不相等,证明孩子啊滑动中,继续发handler继续记录lastY。
废话不多说,代码如下。希望对你有所帮助。
vBookDetail.setOnTouchListener(new OnTouchListener() { private int lastY = 0; private int touchEventId = -9983761; 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()) { //停止了,此处你的操作业务 } else { handler.sendMessageDelayed(handler.obtainMessage(touchEventId, scroller), 1); lastY = scroller.getScrollY(); } } } }; @Override public boolean onTouch(View v, MotionEvent event) { isScoll = false; int eventAction = event.getAction(); switch (eventAction) { case MotionEvent.ACTION_UP: handler.sendMessageDelayed(handler.obtainMessage(touchEventId, v), 5); break; default: break; } return false; } });
相关文章推荐
- Android ScrollView滚动距离和判断滚动停止状态
- android ScrollView滚动距离和判断滚动停止状态
- android ScrollView滚动距离和判断滚动停止状态
- Android 自定义ScrollView嵌套滚动兼容,监听滑动状态:顶部、底部、停止、滑动中
- android 关于判断scrollView滚动停止
- android 关于判断scrollView滚动停止
- Android 如何 ListView 判断滚动到最顶部或者底部 ,首行距离屏幕边缘距离
- Android网络状态的监听+判断是否前台进程+ListView的滚动底部
- 判断android中ScrollView的开始和结束滚动
- Android——滚动视图(ScrollView)图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟
- Android_滚动状态ScrollView实现标题的悬浮和渐隐
- android scrollview fragment viewpager 切换 状态 变化 scrollview 滚动到最上方
- Android的ScrollView的滚动的监听以及屏幕静止状态的监听实现
- android 终于搞定了判断ScrollView是否滚动到底部!
- [ios]ScrollView中根据滚动距离来判断当前页数
- iOS开发 - ScrollView滚动时怎么判断滚动停止及滚动的方向
- Android下 scrollview的滚动停止事件的监听方法
- android 的ListView中,如何判断其内容已滚动到最顶部或者最底部?
- android判断服务是否是运行状态
- Android TV判断网线拔插状态