ViewPager的自动轮播

ViewPager轮播图出来指示器,无限轮播,常常也会有要求自动轮播的需求。这里记录一下轮播图的自动轮播。这篇文章在上篇viewpager自添加指示器,无限轮播的基础上添加的自动轮播功能
下面仍然展示一下效果图:
为了展示效果,这里加快的轮播速度。可以自己修改。

下面贴出自动轮播的代码:
我这里用了两种方法:

  • 方法一:
    其核心就是Handler+Timer;

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    mTimer.schedule(new TimerTask() {
    @Override
    public void run() {
    Message message = new Message();
    message.what = UPDATE_VIEWPAGER;
    handler.sendMessage(message);
    }
    }, 1000,1000);//这里定义了轮播图切换的间隔时间

    Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    switch (msg.what) {
    case UPDATE_VIEWPAGER:
    mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1, true);
    break;
    }
    }
    };
  • 方法二
    开一个子线程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    //开启一个线程,用于循环
    new Thread(new Runnable() {
    @Override
    public void run() {
    isAuto = true;
    while (isAuto) {
    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
    }
    });
    }
    }
    }).start();

Demo请参考:
viewpager自添加指示器,无限轮播
直接添加上面代码即可实现自动轮播