2 myq 26 myq_26 于 2012.09.19 17:14 提问

Android中如何实现每10秒钟换一幅图片?

我是一名初学者,正在写一个基础的Android程序,想在一个屏幕中像幻灯片一样显示5张图片。每换一次图片的时间间隔是10秒钟,一直循环下去。大家谁能告诉我这个程序如何实现,谢谢。

5个回答

myc_100
myc_100   2012.09.20 11:58
已采纳

你可以使用CountDownTimer()方法,由以下两步实现:
1) 声明一些数组,这些数组包含你图片的标识符,
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) i=0;
                    start();
                }
            }.start();
myq_26
myq_26 非常感谢您的回答!
大约 5 年之前 回复
xiaoxiaobian3310903
xiaoxiaobian3310903   2012.09.28 10:29

可以使用线程来实现,开启一个线程,每隔10秒给Handler发送一个消息,Handler接受到消息后更改图片。

public void run() {
    while(true){
        try {
            mReadDataHandler.sendEmptyMessage(0);
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class ReadDataHandler extends Handler{
    @Override
    public void handleMessage(Message msg) {
imgView.setImageDrawable(sdk.getContext().getResources().getDrawable(array[i]));
                i++;
                if(i >= array.length){
                     i = 0;
                }
        super.handleMessage(msg);
    }

}

curie_87
curie_87   2012.09.19 18:03

你可以创建帧动画来实现:

 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()
myq_26
myq_26 谢谢您的回答,这个我还是不怎么会用!
大约 5 年之前 回复
qq_27578023
qq_27578023   2016.06.12 22:59

你可以使用CountDownTimer()方法,由以下两步实现:
1) 声明一些数组,这些数组包含你图片的标识符,
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) i=0;
                start();
            }
        }.start();

                    二。 我觉得还有种更简单的方法就是用个线程handler每十秒启动一下,例如 一个 List集合 , 然后 用个全局变量记录 i  每次启动i++,然后通过 i 去取list里面的值, 当i>list.size()的时候就把 i 变成 0 这样就可以达到循环的效果了,望采纳。。。。。
oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.10.10 18:38

Handler + Message 可以使用

Csdn user default icon
上传中...
上传图片
插入图片