Подтвердить что ты не робот

Android Изменить картинку каждые 10 секунд

Я пытаюсь написать очень простое приложение для Android, которое отображает около 5 снимков один за другим на экране. Я хочу, чтобы он отображал другое изображение примерно через 10 секунд. Может ли кто-нибудь посоветовать мне, как я обойду это. Ниже я изложил, что бы я искал.

Изображение 1
Изображение 2
Изображение 3
Изображение 4
Изображение 5

показать полный экран Изображение 1
подождите 10 секунд
Удалить изображение 1 и отобразить изображение 2
Подождите 10 секунд
Удалить изображение 2 и отобразить изображение 3
Подождите 10 секунд
Удалить изображение 3 и отобразить изображение 4
Подождите 10 секунд
Удалить изображение 4 и отобразить изображение 5
Подождите 10 секунд

Начать снова

4b9b3361

Ответ 1

Рассматривали ли вы использование Анимация кадров?

Вы можете указать xml в вашей папке анимации, которая содержит покадровую анимацию, задающую продолжительность каждого изображения и другие настройки, проверьте его

UPDATE

Вы также можете программно создать анимацию кадра:

    AnimationDrawable animation = new AnimationDrawable();
    animation.addFrame(getResources().getDrawable(R.drawable.image1), 100);
    animation.addFrame(getResources().getDrawable(R.drawable.image2), 500);
    animation.addFrame(getResources().getDrawable(R.drawable.image3), 300);
    animation.setOneShot(false);

    ImageView imageAnim =  (ImageView) findViewById(R.id.img);
    imageAnim.setBackgroundDrawable(animation);

    // start the animation!
    animation.start()

Ответ 2

вы можете использовать CountDownTimer: выполните следующие действия:

1) объявите array, который будет содержать идентификаторы ваших изображений

2) объявите CountDownTimer следующим образом:

int i=0;
new CountDownTimer(10000,1000) {

                @Override
                public void onTick(long millisUntilFinished) {}

                @Override
                public void onFinish() {
                    imgView.setImageDrawable(sdk.getContext().getResources().getDrawable(array[i]));
                    i++;
                    if(i== array.length-1) i=0;
                    start();
                }
            }.start();

Ответ 3

создать blink.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/selected" android:oneshot="false">
<item android:drawable="@drawable/Picture_1" android:duration="10000" />
<item android:drawable="@drawable/Picture_2" android:duration="10000" />
<item android:drawable="@drawable/Picture_3" android:duration="10000" />
<item android:drawable="@drawable/Picture_4" android:duration="10000" />
<item android:drawable="@drawable/Picture_5" android:duration="10000" />
</animation-list>

установите blink.xml в папку с возможностью переноса и в действии Код напишите.

ImageView mImageView ;
mImageView = (ImageView)findViewById(R.id.imageView); //this is your imageView
mImageView .setImageDrawable(getResources().getDrawable( R.drawable.blink));

тогда вы получите то, что хотите.

Ответ 4

Создайте Runnable, который выполнит требуемое изменение (я полагаю, он изменит растровое изображение ImageView), и отправьте их с задержкой на цикл основного потока, используя метод Handler и его postDelayed().

Чтобы сделать это циклом, вы могли бы запустить runnable post.