У меня проблема с pageviewer. Я хочу, чтобы моя страница прокручивалась каждые две секунды. Я пробую что-то вроде этого:
handler.postDelayed(new Runnable() {
public void run() {
viewPager.setCurrentItem(viewPager.getCurrentItem()+1, true);
}
},2000);
Но он работает только тогда, когда я начинаю деятельность. Если я поместил этот код в public void onPageSelected(int page)
он будет работать, но я хочу сделать, когда я нажимаю и public void onPageSelected(int page)
вручную, я хочу остановить этот обработчик, но он не работает. Как я могу это сделать?
Вы должны определить свой Runnable и Handler следующим образом:
private boolean pagerMoved = false;
private static final long ANIM_VIEWPAGER_DELAY = 2000;
private Handler h = new Handler();
private Runnable animateViewPager = new Runnable() {
public void run() {
if (!pagerMoved) {
viewPager.setCurrentItem(viewPager.getCurrentItem()+1, true);
h.postDelayed(animationFrame, ANIM_VIEWPAGER_DELAY);
}
}
};
Убедитесь, что вы настраиваете и сбрасываете свои методы onPause & onResume
@Override
public void onPause() {
super.onPause();
if (h != null) {
h.removeCallbacks(animateViewPager);
}
}
@Override
public void onResume() {
super.onResume();
h.postDelayed(animateViewPager, ANIM_VIEWPAGER_DELAY);
}
Наконец, вам нужно будет прослушать событие касания на вашем представлении, чтобы вы могли установить pagerMoved в true (который затем остановит дальнейшие автоматические переходы страницы).