Android Смена картинки каждые 10 секунд - PullRequest
13 голосов
/ 25 мая 2011

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

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

показать полностьюизображение на экране 1
ожидание 10 секунд
удаление изображения 1 и отображения изображения 2
ожидание 10 секунд
удаление изображения 2 и отображения изображения 3
ожидание 10 секунд
удаление изображения 3 и отображения изображения4
Подождите 10 секунд
Снимите изображение 4 и отобразите изображение 5
Подождите 10 секунд

Начните снова

Ответы [ 4 ]

38 голосов
/ 25 мая 2011

Рассматривали ли вы использование Frame Animations ?

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

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()
7 голосов
/ 25 мая 2011

вы можете использовать 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();
5 голосов
/ 22 апреля 2015

create 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));

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

2 голосов
/ 25 мая 2011

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

Чтобы сделать это циклом, у вас может быть сам выполнимый пост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...