2012-04-04 48 views
0
 ImageView image = (ImageView) findViewById(R.id.imageview); 

    image.setImageResource(drawable.image1); 
    SystemClock.sleep(1000); 
    image.setImageResource(drawable.image2); 

我想改变图像一秒,我上面的代码不起作用,但不知道为什么? 我应该使用线程吗?或者有没有人有更好的想法?更改图像一秒

EDIT 为了澄清的问题:

的图像被显示为“drawable.image2” 我想“drawable.image1”中显示一秒钟然后改变为“drawable.image2”。

EDIT2:

此代码用于onClick。当用户点击图片时需要更改一秒

+0

'不工作'...什么是不工作?它怎么不起作用? – talnicolas 2012-04-04 15:47:48

回答

1

我推荐使用TimerTask,并使用Timer。你可以这样设置:

protected void showDelayedImages() { 

    mImageView.setImageResource(resId1); 

    Timer timer = new Timer(); 
    timer.schedule(new MyTimerTask(), 1000); 
} 

private class MyTimerTask extends TimerTask { 
    @Override 
    public void run() { 

     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 

       mImageView.setImageResource(resId2); 
      } 
     }); 
    } 
} 
+0

完美地工作,谢谢。 – 2012-04-04 16:01:04

0
Thread.sleep(1000); 

应该这样做。虽然也有更好的方法。

+0

相同的功能。 – Graeme 2012-04-04 15:51:41

+0

刚刚试过但仍然没有变化 – 2012-04-04 15:52:46

0

使用调试模式并将每个调用的断点设置为setImageResource。逐步查看是否每个人都被调用以查看您的图像是否正确更改。

在现实世界的情况下,您可能想要基于某些用户操作更改图像,或者例如在线程正在处理时更改图标,然后在完成时更改它。在这个例子中,检出AsyncTask。的drawable.image1

0

使用R.drawable.image1相反,sleep可能只是让你的活动负载慢,因为在这个阶段,没有实际写入页面的任何内容。

为了让您的图像更改,您需要在UI线程上执行切换,并且您需要在图像被充满并添加到页面后执行切换。

尝试在“onClick”事件中添加此代码。

+0

如果'drawable'直接作为导入引用,这不会是一个问题。 – Graeme 2012-04-04 15:52:03

0

它看起来就像你在onCreate()方法执行“开关”