如何修改代码以在 android 中显示图片幻灯片?

How to modify the code to have image slideshow in android?

我在制作 android 应用程序时试图制作几张图片的幻灯片。我在下面使用此代码

final int[] array = {R.drawable.cow_1, R.drawable.cow_2, R.drawable.cow_3, R.drawable.cow_4};
for (int i = 0; i < 4; i++){
    final int finalI = i;
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {                                          
            animal_image.setImageResource(array[finalI]);
        }
    }, 4000);
}

我面临的问题是我没有逐张获取图像的幻灯片,而是代码直接显示第一张图像之后的最后一张图像。代码有问题,请帮我修改。

Try with below

final int[] array = {R.drawable.cow_1, R.drawable.cow_2, R.drawable.cow_3, R.drawable.cow_4};
for (int i = 0; i < 4; i++){
    final int finalI = i;
    Thread.sleep(4000);
     animal_image.setImageResource(array[finalI]);
}

您必须添加 try{... }catch(Exception e){} 块。

您的代码正在做的是为每个图像创建一个 Handler 并将延迟设置为 4 秒。 for 循环将在每次迭代时立即 运行,所有已创建的处理程序将在 4 秒后 运行。这会导致显示最后一张图像,因为最后一个处理程序将在其余部分之后 运行 几毫秒。为了解决这个问题,您需要为每个处理程序设置一个增量计时器。

final int[] array = {R.drawable.cow_1, R.drawable.cow_2, R.drawable.cow_3, R.drawable.cow_4};
for (int i = 0; i < 4; i++){
    final int finalI = i;
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {                                          
            animal_image.setImageResource(array[finalI]);
        }
    }, 4000 * finalI);
}

使用上面给定的代码,将显示第一张图片,其他所有图片将根据图片编号在4秒的倍数后显示(4秒后显示图片2,4秒后显示图片3 8 秒后显示,图像 4 将在 12 秒后显示,依此类推。