计算ListView滚动的距离
来源:互联网 发布:现代进化论 知乎 编辑:程序博客网 时间:2024/05/18 03:20
直接贴代码
private abstract class ListScrollDistanceCalculator implements AbsListView.OnScrollListener { private boolean mListScrollStarted; private int mFirstVisibleItem; private int mFirstVisibleHeight; private int mFirstVisibleTop, mFirstVisibleBottom; private int mTotalScrollDistance; private int mDelta; private int headerHeight = 0; private int headerTop = 0; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (view.getCount() == 0) return; switch (scrollState) { case SCROLL_STATE_IDLE: mListScrollStarted = false; break; case SCROLL_STATE_TOUCH_SCROLL: final View firstChild = view.getChildAt(0); mFirstVisibleItem = view.getFirstVisiblePosition(); mFirstVisibleTop = firstChild.getTop(); mFirstVisibleBottom = firstChild.getBottom(); mFirstVisibleHeight = firstChild.getHeight(); mListScrollStarted = true; mTotalScrollDistance = 0; break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (totalItemCount == 0 || !mListScrollStarted) return; final View firstChild = view.getChildAt(0); final int firstVisibleTop = firstChild.getTop(), firstVisibleBottom = firstChild.getBottom(); final int firstVisibleHeight = firstVisibleBottom - firstVisibleTop; if(headerHeight == 0){ headerHeight = firstChild.getHeight(); headerTop = firstVisibleTop; } mDelta = 0; if (firstVisibleItem > mFirstVisibleItem) { mFirstVisibleTop += mFirstVisibleHeight; mDelta = firstVisibleTop - mFirstVisibleTop; } else if (firstVisibleItem < mFirstVisibleItem) { mFirstVisibleBottom -= mFirstVisibleHeight; mDelta = firstVisibleBottom - mFirstVisibleBottom; } else { mDelta = firstVisibleBottom - mFirstVisibleBottom; } mTotalScrollDistance += mDelta;onScrollDistanceChanged(mDelta, mTotalScrollDistance); mFirstVisibleTop = firstVisibleTop; mFirstVisibleBottom = firstVisibleBottom; mFirstVisibleHeight = firstVisibleHeight; mFirstVisibleItem = firstVisibleItem; } public int getTotalScrollDistance() { return mTotalScrollDistance; } public abstract void onScrollDistanceChanged(int delta, int total); }
1 0
- 计算ListView滚动的距离
- 获取listview滚动的距离
- item固定,获取listview滚动的距离
- Android listview获取滚动的距离
- ListView指定单位时间内的滚动距离
- 计算滚动条距离
- 获取ListView当前滚动的距离(高度)
- 获取ListView/GridView当前滚动的距离(高度)
- 获取ListView当前滚动的距离(高度)
- 获取ListView当前滚动的距离(高度)
- android listview 计算滑动距离
- 如何监听listview的滚动事件——获取listview有效滑动的距离
- Android 获取ListView滚动距离方法
- android 监听listview垂直滚动距离
- 不滚动的listView(解决带head foot 计算)
- 计算listview上移距离,避免输入法遮挡
- Android中解决复写ListView时出现OnScollListener无法监听,这时如果实现标题栏渐变色的话,应该将计算滚动距离的方法,写在不断调用的回调中。
- 无线通信的距离计算
- iframe实现无刷新上传文件
- mysql 中文乱码
- 报表系统定位模型缺省引用规则
- Log类选择fwrite或file_put_contents的性能比较(转自 wide288)
- Android网络视频播放器DEMO
- 计算ListView滚动的距离
- python基础教程共60课-第24课if的嵌套
- PEAR的安装与升级
- Linux下使用GDB工具调试程序
- C++中的强制类型转换
- APUE学习笔记【2】
- 4-10 UVA 815 Flooded!洪水
- Apache Spark 学习笔记(1)
- MongoDB的地埋空间数据存储、空间索引以及空间查询