Android每隔10秒更换一次图片

时间:2011-05-25 14:21:02

标签: android image

我试着写一个非常基本的Android应用程序,在屏幕上一个接一个地显示大约5张图片。我希望它在大约10秒后显示不同的图片。任何人都可以告诉我如何解决这个问题。下面我概述了我要找的东西。

图1
图2
图3
图4
图5

全屏显示图1
等待10秒
删除图片1和显示图片2
等待10秒钟 删除图片2和显示图片3
等待10秒钟 删除图3和显示图片4 等待10秒钟 删除图片4和显示图片5
等待10秒钟

重新开始

4 个答案:

答案 0 :(得分:38)

您是否考虑过使用Frame Animations

您可以在anim文件夹中指定包含逐帧动画的xml,指定每个图像的持续时间以及其他设置,然后查看

<强>更新

当然,您也可以通过编程方式构建帧动画:

    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()

答案 1 :(得分:7)

您可以使用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();

答案 2 :(得分:5)

创建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放在drawable文件夹中 在活动代码写这个。

ImageView mImageView ;
mImageView = (ImageView)findViewById(R.id.imageView); //this is your imageView
mImageView .setImageDrawable(getResources().getDrawable( R.drawable.blink));
然后你会得到你想要的东西。!

答案 3 :(得分:2)

创建一个Runnable来执行你想要的更改(我想它会改变一个ImageView的位图/ drawable),然后用延迟将它们发布到主线程循环,使用{ {1}}及其postDelayed()方法。

要使它成为一个循环,你可以拥有可运行的帖子。