【问题标题】:Automatically reset timer when the current item of view pager is last page当当前视图分页器项目为最后一页时自动重置计时器
【发布时间】:2017-07-30 08:12:28
【问题描述】:

我想用 viewpager 实现一个图像滑块。滑块应自动水平滚动。所以我使用如下定时器:

final Handler handler = new Handler();
        final Runnable Update = new Runnable() {
            public void run() {
                if (currentPage == NUM_PAGES-1) {
                    currentPage = 0;
                    timer.cancel();
                    timer = new Timer();
                }
                mPager.setCurrentItem(currentPage++, true);
            }
        };

        timer = new Timer(); // This will create a new Thread
        timer .schedule(new TimerTask() { // task to be scheduled

            @Override
            public void run() {
                handler.post(Update);
            }
        }, 500, 3000);

mPager 是已经设置好的viewpager。

问题是当它到达最后一个项目(图像)时,它会停在那里并且不再滚动。另一件事,当我手动滚动到第一页时,它突然滚动到最后一页,不知道计时器。

任何帮助将不胜感激。

【问题讨论】:

  • 到达最后一张图片后,您想从第一张图片重新开始,还是应该一张一张地循环回来..?
  • 没有区别。任何解决我的问题的解决方案都会被考虑:) @MuthukrishnanRajendran

标签: java android android-layout android-viewpager


【解决方案1】:

你可以试试这个,

final Handler handler = new Handler();
final Runnable Update = new Runnable() {
    public void run() {
        int currentPage = mPager.getCurrentItem();
        if (currentPage == NUM_PAGES-1) {
            currentPage = 0;
        } else {
            currentPage++;
        }
        mPager.setCurrentItem(currentPage, true);

        handler.postDelayed(this, 5000);
    }
};

handler.postDelayed(Update, 500);

【讨论】:

  • 感谢您的回答。第二个问题解决了。但是第一个问题仍然没有解决。我的意思是滑块到达最后一项,它不会再滑动了。我怎样才能做到这一点?
  • 你的意思是它没有移动到第一个项目..?
  • 是的,就是这样。我只是照你说的做。 @MuthukrishnanRajendran
  • 更具体地说,我在片段中使用mPager,它有一个适配器来保存图像项。
  • 定时器呢?不需要吗?
猜你喜欢
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
相关资源
最近更新 更多