Android-如何获得ListView的滚动速度?

前端开发 前端开发 主题:1148 回复:2395

Android-如何获得ListView的滚动速度?

虐人心 发布于 2016-10-15 字数 164 浏览 1124 回复 1

在ListView滚动的时候,我想实时获得当前的滚动速度,这样我就可以生成一个滚动速度的日志,分析一个ListActivity最终实现的优劣。

所以想问大家是否可以实现?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

想挽留 2017-09-07 1 楼

最后我是这么做的:

private class SpeedMeterOnScrollListener implements OnScrollListener {

private long timeStamp;
private int lastFirstVisibleItem;

public SpeedMeterOnScrollListener() {
    timeStamp = System.currentTimeMillis();
    lastFirstVisibleItem = 0;
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    long lastTime = System.currentTimeMillis();
    //calculate speed by firstVisibleItem, lastFirstVisibleItem, timeStamp and lastTime
    timeStamp = lastTime;
    lastFirstVisibleItem = firstVisibleItem;
}

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}

}

最后速度就可以这么简单的计算下:

float speed = (firstVisibleItem - lastFirstVisibleItem)/(lastTime-timeStamp)

当然这个值是可能为负数的。