源碼簡讀之PullToRefresh

繼承自LinearLayout

init時,會先查看方向。所以這樣可以擴展,如果需要橫向的滑動刷新,只需要重寫getPullToRefreshScrollDirection()方法即可。
初始化mode,animationstyle

找到header和footer佈局,先拿到整體高度,/2,*1.2,設置爲header/footer的高度,然後給父佈局設置padding,通過負值的形式,隱藏掉這兩個佈局。

在下拉/上拉時,採用scrollTo(0, value)方式

添加需要下拉刷新的view。
abstract T createRefreshView(Context context, AttributeSet attrs);
子類在重寫該方法時,必須要給view設置一個id值,id值的聲明應該在ids.xml聲明。
如:
拿到View之後,執行下面的方法:
addRefreshableView(Context context, T refreshableView)
該方法中,新建一個mRefreshableViewWrapper的FrameLayout佈局用來包裝View。

重寫onInterceptTouchEvent(MotionEvent event)

ScrollView判斷是否到達頂部,需要重寫isReadyForPullStart()方法,mRefreshableView.getScrollY() == 0;來判斷。
判斷是否達到底部?
mRefreshableView.getScrollY >= (scrollViewChild.getHeight() - getHeight());

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章