首页 > 解决方案 > 向右或向左滑动 ViewPager 会导致自运行幻灯片出现计时问题

问题描述

我用 ViewPager 创建了一个幻灯片,并安排了 4 秒的延迟并执行下一张幻灯片。我想在手动向左或向右滑动时,它会暂停并等待 4 秒钟然后转到下一张幻灯片,但手动滑动幻灯片被计时器关闭并在 4 秒前自动转到正在进行的幻灯片。我搜索了 stackoverflow 和互联网,但没有找到任何解决方案。这是我的代码:

活动主.xml:

<RelativeLayout ...>
    <androidx.viewpager.widget.ViewPager
        android:layout_width="match_parent"
        android:layout_height="220dp"
        android:id="@+id/viewPager_id"
        android:layout_below="@id/toolbar_id" />
.
.
.
</RelativeLayout>

在 MainActivity.java 中:

ViewPager viewPager;
SlideShowAdapter adapter;
Handler handler;
Runnable runnable;
Timer timer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager = (ViewPager) findViewById(R.id.viewPager_id);
    adapter = new SlideShowAdapter(this);
    viewPager.setAdapter(adapter);        

    handler = new Handler();
    runnable = new Runnable() {
        @Override
        public void run() {
            int i = viewPager.getCurrentItem();
            if (i==adapter.images.length-1){
                i=0;
                viewPager.setCurrentItem(i,true);
            }else {
                i++;
                viewPager.setCurrentItem(i,true);
            }
        }
    };

    timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            handler.post(runnable);
        }
    },4000,4000);
}

}

标签: javaandroidtimerandroid-viewpagerhandler

解决方案


推荐阅读