Android ViewPager AutoScroll使用scheduleAtFixedRate无法正常工作。
这是我的代码,是不是? protected void startAutoScroll() {
swipeTimer=new Timer();
swipeTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if(currentPosition==shalomBannersList.size())
{
currentPosition=0;
}
viewPager.setCurrentItem(currentPosition,true);
currentPosition=currentPosition+1;
}
});
}
}, 100, 4000);
}
请帮帮我。
答案 0 :(得分:0)
试试这段代码:
int page=0;
public void pageSwitcher() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new RemindTask(), 1000, 3000);
}
class RemindTask extends TimerTask {
@Override
public void run() {
mActivity.runOnUiThread(new Runnable() {
public void run() {
if (page > bannersList.size()) {
page = 0;
viewPager.setCurrentItem(page++);
} else {
viewPager.setCurrentItem(page++);
}
}
});
}
}
答案 1 :(得分:-1)
您可以使用此库 -
Android自动滚动ViewPager
ViewPager,可以自动滚动,循环,减速。
ViewPager可以在父ViewPager中正常滑动。
以下是功能
startAutoScroll()启动自动滚动,延迟时间为getInterval()。
startAutoScroll(int)启动自动滚动延迟。
stopAutoScroll()停止自动滚动。
setInterval(long)设置自动滚动时间,以毫秒为单位,默认为DEFAULT_INTERVAL。
setDirection(int)设置自动滚动方向,默认为RIGHT。
setCycle(boolean)设置当自动滚动到达最后一个或第一个项目时是否自动循环,默认为真。
setScrollDurationFactor(double)设置滑动动画持续时间的变化因子。
setSlideBorderMode(int)设置在最后一个或第一个项目滑动时的处理方式,默认为SLIDE_BORDER_MODE_NONE。
setStopScrollWhenTouch(boolean)设置触摸时是否停止自动滚动,默认为true。
setBorderAnimation(boolean)设置在最后一项或第一项自动滚动时是否动画,默认为true。