如何监听listview的滚动事件——获取listview有效滑动的距离
2016-07-25 10:51
429 查看
我们知道Android开发中,listview使用时并没有给我们提供获取滑动距离的方法,而我们在开发中会经常用到通过滑动某个距离去做一些ui的处理,比如说标题栏渐变色的实现等等。
特写本博客解决上述问题!
赶快上代码了。
listview.setOnScrollListener(new AbsListView.OnScrollListener() {
private SparseArray recordSp = new SparseArray(0);
private int mCurrentfirstVisibleItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
mCurrentfirstVisibleItem = firstVisibleItem;
View firstView = view.getChildAt(0);
if (null != firstView) {
ItemRecod itemRecord = recordSp.get(firstVisibleItem);
if (null == itemRecord) {
itemRecord = new ItemRecod();
}
itemRecord.height = firstView.getHeight();
itemRecord.top = firstView.getTop();
recordSp.append(firstVisibleItem, itemRecord);
}
LogUtils.d(xiaoqiang, getScrollY() + );
}
private int getScrollY() {
int height = 0;
for (int i = 0; i < mCurrentfirstVisibleItem; i++) {
ItemRecod itemRecod = recordSp.get(i);
height += itemRecod.height;
}
ItemRecod itemRecod = recordSp.get(mCurrentfirstVisibleItem);
if (null == itemRecod) {
itemRecod = new ItemRecod();
}
return height - itemRecod.top;
}
class ItemRecod {
int height = 0;
int top = 0;
}
});
特写本博客解决上述问题!
赶快上代码了。
listview.setOnScrollListener(new AbsListView.OnScrollListener() {
private SparseArray recordSp = new SparseArray(0);
private int mCurrentfirstVisibleItem = 0;
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
mCurrentfirstVisibleItem = firstVisibleItem;
View firstView = view.getChildAt(0);
if (null != firstView) {
ItemRecod itemRecord = recordSp.get(firstVisibleItem);
if (null == itemRecord) {
itemRecord = new ItemRecod();
}
itemRecord.height = firstView.getHeight();
itemRecord.top = firstView.getTop();
recordSp.append(firstVisibleItem, itemRecord);
}
LogUtils.d(xiaoqiang, getScrollY() + );
}
private int getScrollY() {
int height = 0;
for (int i = 0; i < mCurrentfirstVisibleItem; i++) {
ItemRecod itemRecod = recordSp.get(i);
height += itemRecod.height;
}
ItemRecod itemRecod = recordSp.get(mCurrentfirstVisibleItem);
if (null == itemRecod) {
itemRecod = new ItemRecod();
}
return height - itemRecod.top;
}
class ItemRecod {
int height = 0;
int top = 0;
}
});
相关文章推荐
- SpringMVC Controller配置方式
- 使用C++ 11特性写一个简单的线程池
- null和Undefined区别
- 40元红包发10个人,每个人最多发6块解决方案。
- Android开发之初识Camera图像采集
- iPhone中使用NSLocalizedString实现国际化
- [从头学数学] 第247节 Python实现数据结构:栈
- PAT 1017 Stack (30)
- Codeforces Round #301 (Div. 2) -- D. Bad Luck Island (概率DP)
- C#开放和封闭原则
- Android使用绘图Path总结
- 如何通过新浪微博和QQ空间获取精准客户
- JS继承
- 设计模式之门面模式
- Spark的Master分析3(Master状态改变机制分析)
- MyEclipse10.5-10.6-10.7导出war包报错问题
- 数据库进阶之数据库索引
- Cisco Port-Channel 设置端口捆绑方法
- linux下查看动态链接库依赖关系的命令 x86: ldd *.so arm: arm-linux-readelf -d *.so 实际例子: 以项目中用到的库librtsp.so分析: lijun@ubuntu:~/workspace$ arm-hisiv100nptl-linux-ld -d librtsp.so arm-hisiv100nptl-linux-ld:
- PHP基本知识收集