Как получить скорость прокрутки в методе прокрутки android? - PullRequest
1 голос
/ 09 июля 2020

Я хочу рассчитать скорость прокрутки, когда пользователь прокручивает изображение. Я знаю, что метод onFling дает скорость, но я хочу знать скорость в методе onScroll.

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
    return super.onScroll(e1, e2, distanceX, distanceY);
}

1 Ответ

0 голосов
/ 09 июля 2020

можно попробовать примерно так:

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;

            Toast.makeText(Screen_SubjectsLibrary.this, "Speed: " +speed + " elements/second", Toast.LENGTH_SHORT).show();
        }

    }

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