滑動到底部或頂部響應的ScrollView實現

2021-09-09 00:24:31 字數 1885 閱讀 7839

**滑動到底部或頂部響應的scrollview/

兩種實現方式的主要不同點在於判斷滑動位置的地方,第一種方式在onscrollchanged函式中判斷, 第二種在ontouchlistener的ontouch中判斷。其他如是否滾動到邊緣的判斷、響應事件介面onborderlistener、對外暴露的介面都一樣。

第一種方式**可見onscrollchanged borderscrollview@googlecode

第二種方式**可見ontouchlistener borderscrollview@googlecode

1、判斷是否已經滾動到頂部或底部,**如下:

private

void

doonborderlistener()

} else

if (getscrolly() == 0)

}}其中getchildat表示得到scrollview的child view,因為scrollview只允許乙個child view,所以contentview.getmeasuredheight()表示得到子view的高度, getscrolly()表示得到y軸的滾動距離,getheight()為scrollview的高度。當getscrolly()達到最大時加上scrollview的高度就的就等於它內容的高度了啊~

2、定義到達頂部和底部響應事件介面onborderlistener,包含ontop和onbottom函式

/**

* onborderlistener, called when scroll to top or bottom

* *

@author

trinea 2013-5-22 */

public

static

inte***ce

onborderlistener

這個介面允許使用者自定義到達底部和頂部的響應事件。

第一種方式: 在onscrollchanged函式中判斷,主要**如下:

@override

protected

void onscrollchanged(int x, int y, int oldx, int

oldy)

在scrollview的onscrollchanged函式中判斷是否到達頂部和底部,並進行相應事件呼叫,onscrollchanged函式在scrollview中內容開始滾動時出發被呼叫。

第二種方式: 在ontouchlistener的ontouch中判斷,主要**如下:

this.onbordertouchlistener = new

ontouchlistener()

return

false

; }

};

表示在touch結束後,手指拿起時執行doonborderlistener,進行判斷和響應。

兩種方式的比較:

第一種方式精確度高,但doonborderlistener可能執行多次,因為scrollview滑動中,onscrollchanged總是在不停被呼叫。

第二種方式不會造成doonborderlistener多次執行,但卻可能一次都沒有呼叫。比如你快速滑動,還未到達底部手指已經鬆開,由於慣性滾動到底部,可能並不會執行doonborderlistener。因為ontouch的action_up事件在手指鬆開已經接收到這時候卻還沒有到達底部。

兩種方式各有優劣,大家可酌情選擇。我要求準確響應,所以選擇了第一種,自己再做下控制確保不會多次執行。

listView滑動到底部和頂部

xlistviewgetlistview setonscrolllistener new onscrolllistener override public void onscroll abslistview view,int firstvisibleitem,int visibleitemcount...

滑動到底部

document height 文件高度 window height 是文件視窗高度 div offset top 是標籤距離頂部高度 wi ndow sc roll top 是滾動條 高度 和 window scrolltop 是滾動條高度 和 windo w s crol ltop 是滾動 條高...

監聽srollview滑動到底部

1.scrollview本身沒有監聽是否滾動到底部的事件 所以我們需要乙個類繼承自scrollview從而重寫裡面的方法,直接上 了 2.public class routescrollview extends scrollview public routescrollview context co...