Android ImageView没有刷新

时间:2013-06-02 08:17:42

标签: android android-imageview android-view

我动态创建了四个ImageView,当我点击一个按钮后我想在一秒钟后更改每个图像,但它们都会在四秒后改变。谁能给我一个关于这个问题的建议?

public void Run_Click(View view) {
    int j=10;
    try {
        while(true) {
             if(j<14) {
                 im=(ImageView)findViewById(j);
                 im.setImageResource(R.drawable.open);
                 Thread.sleep(1000);
                 j++;
             } else {
                 j=10;
                 for(int i=10;i<14;i++) {
                     im=(ImageView)findViewById(i);
                     im.setImageResource(R.drawable.close);
                 }
                 Thread.sleep(2000);
              }
    }

2 个答案:

答案 0 :(得分:1)

你正在UI线程中睡觉,这只是一种非常非常非常非常糟糕的方法。

请查看here

  

public void addFrame(Drawable frame,int duration)

     

在API级别1中添加向动画添加框架

     

参数frame要添加持续时间的帧有多长(以毫秒为单位)   框架应该出现

并使用addFrame方法。

您只需指定一个Drawable和一个持续时间。

答案 1 :(得分:0)

你不应该使用thread.sleep()这是一个糟糕的设计方法。在ui线程上调用thread.sleep()是糟糕的设计。即使你使用线程做一些计算也不要使用thread.sleep()。

如果实现Thread或HandlerThread,请确保在等待工作线程完成时不阻塞UI线程 - 不要调用Thread.wait()或Thread.sleep()。在等待工作线程完成时,您的主线程应该为其他线程提供一个Handler,以便在完成时回发。

http://developer.android.com/training/articles/perf-anr.html

您可以尝试链接中提到的几个选项,例如handler,animation drawable和timer task

setBackgroundResource doesn't set the image