您的位置:首页 > 其它

如何监听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;

}

});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: