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 に設定できるようにする必要があります (これにより、以降の自動ページ遷移が停止します)。