Android - 使用ImageView显示一系列图像

时间:2011-04-24 09:24:21

标签: android image timer imageview series

我尝试使用计时器在单个ImageView中显示一系列png图像(例如每1秒更换一次图片)。

应用程序一直崩溃,这是我的代码,请帮忙。 main.xml中有ImageView,由于某些原因我无法在此处发布完整的xml文件。无论如何,它只是一个标准的main.xml,在Linear Layout中有额外的ImageView。

public class AniImgTest extends Activity {

    ImageView iv;
    public int i=0;
    Timer timer = new Timer();  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       this.iv=(ImageView)findViewById(R.id.imageView1);
       timer.scheduleAtFixedRate(new TimerTask(){
            @Override
            public void run() {
                Log.v("","myDebug "+i);
                if(i<2)    
                    i++;
                else
                    i=0;

                switch(i){
                case 0:iv.setImageResource(R.drawable.a1); 
                    break;
                case 1:iv.setImageResource(R.drawable.a2); 
                    break;
                case 2:iv.setImageResource(R.drawable.a3); 
                    break;
                }

            }

    }, 0, 5000);

    }
} 

2 个答案:

答案 0 :(得分:0)

您的任务在与主线程不同的线程上运行,因此无法更改GUI并导致崩溃。使用handler在主线程上执行这些任务。

还有一件事(不相关,但......),而不是:

if(i<2)  
    i++;
else
    i=0;
switch(i){

你可以写:

switch(++i % 3){

答案 1 :(得分:0)

使用此代码块来更改UI组件

     AniImgTest.this.runOnUiThread(new Runnable() {

            public void run() {

                // change your image here.
            }
        });