Android smoothScroll, чтобы не вызывать onScrollStateChanged - PullRequest
6 голосов
/ 28 сентября 2011

Я использую smoothScrollBy() для прокрутки до определенной позиции в ListView.Я хотел бы получить уведомление, когда ListView завершит прокрутку, чтобы интегрировать его с текущим событием onScrollStateChanged(), которое срабатывает, когда пользователь выполняет прокрутку пальцем.

В настоящее время я использую Timer он запускается через 100 мс после продолжительности плавной прокрутки, но это не так управляемо событиями, как хотелось бы.

1 Ответ

2 голосов
/ 06 октября 2011

Если вы внедрили OnScrollListener для своего списка, вы можете наблюдать, когда меняется ScrollState.Используйте глобальный логический (isScrolling), установленный в true, при вызове smoothScrollBy (), а затем установите его в false, когда OnScrollListener регистрирует ScrollState из SCROLL_STATE_IDLE.

sidebar1.smoothScrollToPositionFromTop(currentPosition, 0, 500);
isScrolling = true;

sidebar1.setOnScrollListener(new OnScrollListener() {

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
        isScrolling = false;
    }

}

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

}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...