Что вы делаете с кодом, так это то, что он создает 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 секунды на основе номера изображения (изображение 2 будет отображаться через 4 секунды, изображение 3 будет отображаться через 8 секунд, изображение 4 будет отображаться через 12 секунд и т. д.).