Android Изменить картинку каждые 10 секунд
Я пытаюсь написать очень простое приложение для Android, которое отображает около 5 снимков один за другим на экране. Я хочу, чтобы он отображал другое изображение примерно через 10 секунд. Может ли кто-нибудь посоветовать мне, как я обойду это. Ниже я изложил, что бы я искал.
Изображение 1
Изображение 2
Изображение 3
Изображение 4
Изображение 5
показать полный экран Изображение 1
подождите 10 секунд
Удалить изображение 1 и отобразить изображение 2
Подождите 10 секунд
Удалить изображение 2 и отобразить изображение 3
Подождите 10 секунд
Удалить изображение 3 и отобразить изображение 4
Подождите 10 секунд
Удалить изображение 4 и отобразить изображение 5
Подождите 10 секунд
Начать снова
Ответы
Ответ 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.