PullToRefresh.jar
<pre name="code" class="java"> @Override
public final boolean onInterceptTouchEvent(MotionEvent event) {
。。。
case MotionEvent.ACTION_DOWN: {
/***
* isReadyForPull()改函数判断当前pull动作是否需要刷新列表
* 主要做的事情是:判断listview的第一天item是否可见
*
*/
if (isReadyForPull()) {
mLastMotionY = mInitialMotionY = event.getY();
mLastMotionX = mInitialMotionX = event.getX();
mIsBeingDragged = false;
}
break;
。。。
}
return mIsBeingDragged;
}
@Override
public final boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE: {
if (mIsBeingDragged) {
mLastMotionY = event.getY();
mLastMotionX = event.getX();
/***
* pullEvent();改函数描述了拖拽过程中,整个容器向下scroll的过程
* 里面调用了两个重要的函数:scroll和setState
*/
pullEvent();
}
@Override
public final boolean onTouchEvent(MotionEvent event) {
case MotionEvent.ACTION_UP: {
if (mIsBeingDragged) {
mIsBeingDragged = false;
/***
* RELEASE_TO_REFRESH拖拽放开的意思
* up事件的时候,真正执行数据的加载
*/
if (mState == State.RELEASE_TO_REFRESH && (null != mOnRefreshListener || null != mOnRefreshListener2)) {
setState(State.REFRESHING, true);
return true;
}
}