13

我想知道是否可以使用 handler().postdelayed 两次?

我的意思是,我想创建一个按钮,单击它时会改变颜色并保持此状态 1 秒,然后 1 秒后另一个按钮会改变颜色。

我创建了以下代码:

在 onclicklistener 中:

btn3.setBackgroundColor(Color.WHITE);
  new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {

        checkAnswer();
        waitAnswer();
        btnRsp3.setBackgroundResource(R.drawable.selector); 
      }
    }, 1000);

检查答案:

 public void CheckAnswer(){
      btn1.setBackgroundColor(Color.GREEN);

  new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {
  }
}, 500);

btn1.setBackgroundResource(R.drawable.selector);
}

我认为问题出在 CheckAnswer 上,因为它似乎并没有在这个 postDelayed 中停止并进入 waitAnswer。

谢谢

4

2 回答 2

21

为什么您希望它在 postDelayed 上停止?postDelayed 将您的 Runnable 放入 Handler Looper 队列并返回。由于两个处理程序都是在同一个循环器上创建的,所以第二个可运行程序在第一个程序终止后执行(加上 500 毫秒延迟的剩余时间)

更新:

你需要这样的东西

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        btn1.setBackgroundColor(Color.GREEN);
    }
}, 1000);
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        btn1.setBackgroundResource(R.drawable.selector);
    }
}, 2000);
于 2013-08-17T02:38:46.007 回答
1
new Handler().postDelayed(new Runnable() 
{
        @Override
        public void run() 
        {
            //Your Work
        }
  }, 1000);
于 2019-07-03T11:00:40.637 回答