我的网页浏览器有问题。我希望我的页面每两秒滚动一次。我尝试这样的事情:
handler.postDelayed(new Runnable() {
public void run() {
viewPager.setCurrentItem(viewPager.getCurrentItem()+1, true);
}
},2000);
但它只在我开始活动时才有效。如果我把这个代码放到public void onPageSelected(int page)
它可以工作,但我想点击并手动滚动页面我想停止这个处理程序,但它无法正常工作。我怎么能这样做?
答案 0 :(得分:10)
您应该像这样定义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);
}
最后,您需要在viewpager上侦听触摸事件,以便将pagerMoved设置为true(然后将停止进一步的自动页面转换)。