说明一下我现在遇到的状况:

首先用户点击一个按钮,该按钮的背景换成另外一个:

thisbutton.setBackgroundResource(R.drawable.icon);

过一段时间,我需要回到前面的状态,按钮的背景也换回来:

thisbutton.setBackgroundResource(R.drawable.defaultcard);

我想在这两行代码之间把线程暂停这一段时间,下面是我的代码:

try {Thread.sleep(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

我还试过:

new Reminder(5);

reminder定义:

public class Reminder {

Timer timer;

    public Reminder(int seconds) {
        timer = new Timer();
        timer.schedule(new RemindTask(), seconds*1000);
    }

    class RemindTask extends TimerTask {
        public void run() {
            System.out.format("Time's up!%n");
            timer.cancel(); //Terminate the timer thread
        }
    }  
}

但是都没有用,我想知道应该怎么去实现?谢谢!

推荐图书

  • Android 2高级编程(第2版)
  • Google Android SDK开发范例大全(第2版)
  • 疯狂Android讲义


2个回答

@Override
    public void onClick(View v) {
        my_button.setBackgroundResource(R.drawable.icon);
        // SLEEP 2 SECONDS HERE ...
        final Handler handler = new Handler(); 
        Timer t = new Timer(); 
        t.schedule(new TimerTask() { 
           public void run() { 
               handler.post(new Runnable() { 
                    public void run() { 
                    my_button.setBackgroundResource(R.drawable.defaultcard); 
                   } 
              }); 
          } 
       }, 2000); 
   }

在你的代码中把Timer去掉,然后使用Handler.postDelayed()

@Override
public void onClick(View v) {
    my_button.setBackgroundResource(R.drawable.icon);
    // SLEEP 2 SECONDS HERE ...
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
         public void run() { 
              my_button.setBackgroundResource(R.drawable.defaultcard); 
         } 
    }, 2000); 
}