Android 監聽 ScrollView 滑動到最底部。

作產品時,有一個需求,須要監聽ScrollView滑動到最底部。在網上找了些方法,都有這樣或那樣的問題,要不就是監聽不精確,ide

要不就是重複監聽,那些代碼沒有產品化,很不可靠。測試

通過本身試驗,終於找到了個可以精確監聽的實現方法。代碼以下:優化

 1 public class ScrollBottomScrollView extends ScrollView {
 2 
 3     private OnScrollBottomListener _listener;
 4     private int _calCount;
 5 
 6     public interface OnScrollBottomListener {
 7         void srollToBottom();
 8     }
 9 
10     public void registerOnScrollViewScrollToBottom(OnScrollBottomListener l) {
11         _listener = l;
12     }
13 
14     public void unRegisterOnScrollViewScrollToBottom() {
15         _listener = null;
16     }
17 
18     public ScrollBottomScrollView(Context context, AttributeSet attrs) {
19         super(context, attrs);
20     }
21 
22     @Override
23     protected void onScrollChanged(int l, int t, int oldl, int oldt) {
24         View view = this.getChildAt(0);
25         if (this.getHeight() + this.getScrollY() == view.getHeight()) {
26             _calCount++;
27             if (_calCount == 1) {
28                 if (_listener != null) {
29                     _listener.srollToBottom();
30                 }
31             }
32         } else {
33             _calCount = 0;
34         }
35     }
36 }

用到這段代碼的產品也測試上線了,沒有Bug。this

Android SDK 中相似於這樣的不完美數不勝數,好比onTouch事件的傳遞,onMeasure方法的調用,都是很不精確,spa

須要本身再優化的,沒辦法,無力吐槽。code

相關文章
相關標籤/搜索