listview的状态理解
SCROLL_STATE_TOUCH_SCROLL
状态的意思为当手点击屏幕准备滑动时
该状态可以用来做一些header view和footer view的visible的改变。因为假如不在这个状态改变visible的话,在滑动到边缘时,listview会忽视header view和footer view的高度。意思就是listview得到的消息就是我已经滑到边缘了。谁让你不在我画之前告诉我具体view的visible,哈哈!具体代码位置是
AbsListView.class -> onTouchView(MotionEvent ev) ->
onTouchMove(MotionEvent ev, MotionEvent vtev) ->
startScrollIfNeeded(int x, int y, MotionEvent vtev)->
scrollIfNeeded(int x, int y, MotionEvent vtev) ->
trackMotionScroll(deltaY, incrementalDeltaY)
在trackMotionScroll 的开始处会获得整个listview的高度
final int firstTop = getChildAt(0).getTop();
final int lastBottom = getChildAt(childCount - 1).getBottom();
在startScrollIfNeeded方法中调用
reportScrollStateChange(OnScrollListener.SCROLL_STATE_TOUCH_SCROLL);
通知状态改变了SCROLL_STATE_IDLE
状态的意思时listview touch事件结束时调用
ITElephant Plan