0

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

该应用程序不断崩溃,这是我的代码,请帮助。main.xml 中有 ImageView ,由于某种原因,我无法在此处发布完整的 xml 文件。无论如何,它只是一个标准的 main.xml,在线性布局中带有额外的 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);

    }
} 
4

2 回答 2

0

使用此代码块更改 UI 组件

     AniImgTest.this.runOnUiThread(new Runnable() {

            public void run() {

                // change your image here.
            }
        });
于 2012-11-28T12:54:04.843 回答
0

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

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

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

你可以写:

switch(++i % 3){
于 2011-04-24T09:36:58.037 回答