图片轮播计时器 Android

Timer for Image carousel Android

我已经为我的应用创建了图片轮播。实际上,为了尝试,它包括 5 个横幅。

我会插入定时器来自动切换横幅,但我找不到正确的方法。

这是我的带有幻灯片代码的 MainActivity 文件:

viewPager = findViewById(R.id.viewPagerId);
    mList = new ArrayList<>();
    mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
    mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
    mList.add(new ModalClass(R.drawable.banner_ffff , "Title"));
    mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
    mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));

    SlideHomepageAdapter slideHomepageAdapter = new SlideHomepageAdapter(this, mList);
    viewPager.setAdapter(slideHomepageAdapter);

你能帮帮我吗?

感谢您的回答。

您可以为此使用 ScheduledExecutorService

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(updateToNextImage, 0, 3000, TimeUnit.MILLISECONDS);

updateToNextImage Runnable 应该处理图像的切换。像这样:

Runnable updateToNextImage = new Runnable() {
    @Override
    public void run() {
        runOnUiThread(
            new Runnable() {
                @Override
                public void run() {
                    // Modify ui on the main thread
                    viewPager.setCurrentItem(currentImageIndex++ % imageCount, true);
                }
            }
        );
    }
};

完成后别忘了关闭它:

executor.shutdown();

好的,那么代码应该是:

    viewPager = findViewById(R.id.viewPagerId);
    mList = new ArrayList<>();
    mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));
    mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
    mList.add(new ModalClass(R.drawable.banner_ffff , "Title"));
    mList.add(new ModalClass(R.drawable.banner_gggg , "Title"));
    mList.add(new ModalClass(R.drawable.banner_eeee , "Title"));

    SlideHomepageAdapter slideHomepageAdapter = new SlideHomepageAdapter(this, mList);
    viewPager.setAdapter(slideHomepageAdapter);

    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
    executor.scheduleAtFixedRate(updateToNextImage, 0, 3000, TimeUnit.MILLISECONDS);

    Runnable updateToNextImage = new Runnable() {
    @Override
    public void run() {
        runOnUiThread(
            new Runnable() {
                @Override
                public void run() {
                    // Modify ui on the main thread
                    viewPager.setCurrentItem(currentImageIndex++ % imageCount, true);
                }
            }
        );
    }
};

executor.shutdown();

抱歉,我是新手。