0

我已经动态地创建了四个 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);
              }
    }
4

2 回答 2

1

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

请看这里

public void addFrame(可绘制帧,int 持续时间)

在 API 级别 1 中添加 向动画添加帧

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

并使用 addFrame 方法。

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

于 2013-06-02T08:36:38.060 回答
0

您不应该使用 thread.sleep() 这是一种糟糕的设计方法。在 ui 线程上调用 thread.sleep() 是不好的设计。即使您使用线程进行一些计算,也不要使用 thread.sleep()。

如果您实现 Thread 或 HandlerThread,请确保您的 UI 线程在等待工作线程完成时不会阻塞——<strong>不要调用 Thread.wait() 或 Thread.sleep()。而不是在等待工作线程完成时阻塞,您的主线程应该为其他线程提供一个处理程序,以便在完成后回发。

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

您可以尝试链接中提到的几个选项,例如处理程序、动画绘制和计时器任务

setBackgroundResource 不设置图像

于 2013-06-02T09:56:10.517 回答