2014-10-09 51 views
-1

我有13个按钮,需要逐个更改按钮的颜色。在下面的代码中,“copyview”具有按钮ID,“TextToSpeech”调用TextToSpeech方法。我的问题是我在泰米尔语中通过字符发表宪章。但按钮颜色仅在for循环结束时才会更改。按钮的颜色不会逐个改变,在for循环结束时,所有按钮颜色都会变为白色。但音频播放完美无缺。我所该做的,使按钮的颜色得到改变逐一..仅在for循环结束时按钮颜色变化

 for(int i=0;i<Uirkeys.length;i++){ 
     try {   
      TeaxtToSpeach(map.get(Uirkeys[i])); 
      copyView.get(i).setBackgroundColor(Color.WHITE); 
      Thread.sleep(700); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

它会立即改变,如果你摆脱Thread.sleep(700); – Blackbelt 2014-10-09 09:37:03

+0

我需要等待音频完成并在此之后需要更改btn颜色。 – prasad 2014-10-09 09:38:58

+0

我需要为循环等待每增量700毫秒,我怎么能这样做 – prasad 2014-10-09 09:41:32

回答

0

您需要在UI线程中运行它,因为你运行的是UI的改变
这是一个例子

Activity.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      TeaxtToSpeach(map.get(Uirkeys[i])); 
      copyView.get(i).setBackgroundColor(Color.WHITE); 
     } 
});