標籤:
做產品時,有一個需求,需要監聽ScrollView滑動到最底部。在網上找了些方法,都有這樣或那樣的問題,要不就是監聽不精確,
要不就是重複監聽,那些代碼沒有產品化,很不可靠。
經過自己實驗,終於找到了個能夠精確監聽的實現方法。代碼如下:
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 @Override23 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。
Android SDK 中類似於這樣的不完美數不勝數,比如onTouch事件的傳遞,onMeasure方法的調用,都是很不精確,
需要自己再最佳化的,沒辦法,無力吐槽。
Android 監聽 ScrollView 滑動到最底部。