日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android ScrollView滚动距离和判断滚动停止状态

發布時間:2025/6/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android ScrollView滚动距离和判断滚动停止状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天很高興,自己解決了判斷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。

廢話不多說,代碼如下。希望對你有所幫助。

vBookDetail.setOnTouchListener(new OnTouchListener() {private int lastY = 0;private int touchEventId = -9983761;Handler handler = new Handler() {@Overridepublic 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();}}}};@Overridepublic boolean onTouch(View v, MotionEvent event) {isScoll = false;int eventAction = event.getAction();int y = (int) event.getRawY();switch (eventAction) {case MotionEvent.ACTION_UP:handler.sendMessageDelayed(handler.obtainMessage(touchEventId, v), 5);break;default:break;}return false;}});

總結

以上是生活随笔為你收集整理的android ScrollView滚动距离和判断滚动停止状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。