Android 监听 ScrollView 滑动到最底部。

做产品时,有一个需求,需要监听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     @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。

Android SDK 中类似于这样的不完美数不胜数,比如onTouch事件的传递,onMeasure方法的调用,都是很不精确,

需要自己再优化的,没办法,无力吐槽。

 

posted @ 2015-03-21 09:37  Andy Zhai  阅读(6900)  评论(0编辑  收藏  举报