我想在单击按钮时更改其背景颜色。我的目标是将颜色更改5秒钟,然后再次更改为另一种颜色。

按钮的原始颜色为黄色。

这是我尝试过的部分代码:

public void click(View view){
  myTestButton = (Button)view;
  myTestButton.setBackgroundColor(Color.BLUE);
  //*Wait lines;*
  myTestButton.setBackgroundColor(Color.RED);
}


该按钮将颜色更改为红色,但从不更改为蓝色。我怀疑该视图直到稍后才刷新。我希望在等待行之前刷新按钮。
我也尝试过myTestButton.invalidate(),但无济于事。

在此先感谢一些很棒的提示!!

最佳答案

您在“等待线”中使用什么?我猜那里是一个问题,因为您可能不会使UI线程在那里休眠,并且UI线程调用了此方法(onClick)。

我建议您使用方法View.postDelayed(Runnable action, long delayMills来做到这一点。
例:

myTestButton.postDelayed(new Runnable() {
    public void run() {
        myTestButton.setBackgroundColor(Color.RED);
    }
}


请注意,您必须在onClick方法中将myTestButton声明为final

10-04 12:41