ViewPager AutoScroll无法正常工作

时间:2015-07-02 04:58:13

标签: android timer android-viewpager autoscroll

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);

}

请帮帮我。

2 个答案:

答案 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中正常滑动。

Git Link enter image description here

以下是功能

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。