Android viewpager自动滑动

时间:2015-02-21 15:17:16

标签: android android-viewpager

如何使用手动滑动一起处理viewpager页面的自动滑动 在viewpager中有一组10页,每次在3秒后滑动,但问题是当用户滑动页面时,它会移回到序列页面,我需要跟随。 1>如果用户滑动两个连续页面而不是它不应该返回。 当用户正在滑动页面时,计时器应暂停,并且计时器应从保持页面的屏幕重新开始。代码是

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ten);
        timer = new Timer();


viewPager.setAdapter(adapter);

        viewPager.setCurrentItem(0);

        // Timer for auto sliding

        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (count <= alQuestion.size()) {
                            viewPager.setCurrentItem(count, true);
                            count++;
                        } else {
                            viewPager.setCurrentItem(count);
                        }
                    }
                });
            }
        }, 500, 3000);

2 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题,并通过编写以下功能解决了问题。

public void autoSlider(final ViewPager viewPager) {

    rr = new Runnable() {
        public void run() {
            int pos = viewPager.getCurrentItem();
            if(pos > i && pos != slidingImages.length - 1){
                i = pos;
                i++;
                        }
            else if(pos < (i-1)){
                i = pos;
                i++;
            }
            viewPager.setCurrentItem(i, true);
            i++;
            if (i >= slidingImages.length)
                i = 0;
            autoSlider(viewPager);
        }};
    handler.postDelayed(rr, 3000);
}

希望这会对你有所帮助。

答案 1 :(得分:0)

create TimerTask class and schedule it in Timer class

    private class SliderTimer extends TimerTask {

    @Override
    public void run() {
        SliderActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (viewPager.getCurrentItem() < color.size() - 1) {
                    viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
                } else {
                    viewPager.setCurrentItem(0);
                }
            }
        });
    }
}


Timer timer = new Timer();
timer.scheduleAtFixedRate(new SliderTimer(), 4000, 6000)

Kindly follow this link for step bye step guideline https://medium.com/@shaktisinh/auto-slider-with-indicator-in-android-a28153d42125