gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:41:25 26 4
gpt4 key购买 nike

我有一个带有 onScrollStateChanged 和 onScroll 事件监听器的 ListView。我希望能够获得 ListView 的滚动速度,或者以某种方式在某个事件监听器中获得启动滚动的 finalX 位置。我们的应用面向 SDK 版本 7。

我需要测量或获取 ListView 滚动的速度。

最佳答案

区分第一个可见项目时差不是一个好的解决方案。 OnScroll 监听器每隔固定时间接收一次 onScroll 事件,所以大多数情况下除法结果为“0”。

所以你可以试试这样的:

private OnScrollListener onScrollListener = new OnScrollListener() {

private int previousFirstVisibleItem = 0;
private long previousEventTime = 0;
private double speed = 0;

@Override
public void onScroll(HtcAbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {

if (previousFirstVisibleItem != firstVisibleItem){
long currTime = System.currentTimeMillis();
long timeToScrollOneElement = currTime - previousEventTime;
speed = ((double)1/timeToScrollOneElement)*1000;

previousFirstVisibleItem = firstVisibleItem;
previousEventTime = currTime;

Log.d("DBG", "Speed: " +speed + " elements/second");
}

}

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

关于java - 如何获得 ListView 的滚动速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7895504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com